cimon scada hmi 교육자료 - blog.kakaocdn.net

219
CIMON SCADA HMI 교육 자료 기본/ 고급 통합 교육 과정 ● 기본 교육 과정 목차 1. CIMON SCADA 개요 --- 2 2. 핵심 용어 설명 --- 8 3. 화면 작화 하기 --- 15 4. 고정 페이지 실습 --- 35 5. 트렌드와 데이터 수집 --- 41 6. CIMON PLC 통신 실습 --- 47 7. 보고서 실습 --- 61 8. 태그의 속성 --- 70 9. 추가 기능 소개 --- 88 ● 고급 교육 과정 목차 1. 스크립트 --- 100 2. I/O 디바이스 통신 상태 체킹 --- 125 3. SCADA 네트워킹 --- 128 4. 기타 고급 기능 및 내부 함수 --- 142 I. 엑셀 파일 생성 --- 143 II. 데이터 수집 관련 --- 149 III. 트렌드 관련 --- 157 5. ODBC 관련 --- 168 6. DB 테이블와 그리드 실습 --- 196 ● 부록 목차 1. 파일처리 관련 --- 205 1 CIMON SCADA HMI 정기교육 자료

Upload: others

Post on 07-Apr-2022

233 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

CIMON SCADA HMI 교육 자료

기본/ 고급 통합 교육 과정

● 기본 교육 과정 목차

1. CIMON SCADA 개요 --- 22. 핵심 용어 설명 --- 83. 화면 작화 하기 --- 154. 고정 페이지 실습 --- 355. 트렌드와 데이터 수집 --- 416. CIMON PLC 통신 실습 --- 477. 보고서 실습 --- 618. 태그의 속성 --- 709. 추가 기능 소개 --- 88

● 고급 교육 과정 목차

1. 스크립트 --- 1002. I/O 디바이스 통신 상태 체킹 --- 1253. SCADA 네트워킹 --- 1284. 기타 고급 기능 및 내부 함수 --- 142

I. 엑셀 파일 생성 --- 143II. 데이터 수집 관련 --- 149III. 트렌드 관련 --- 157

5. ODBC 관련 --- 1686. DB 테이블와 그리드 실습 --- 196

● 부록 목차

1. 파일처리 관련 --- 205

1

CIMON SCADA HMI 정기교육 자료

Page 2: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

1. CIMON SCADA 개요

2

CIMON SCADA HMI 정기교육 자료

Page 3: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

컨트롤러

SCADA 프로그램 목적

전문가

어려움 쉬움

3

● 위와 같은 시스템을 구성하는 실제 현장을 가정한다면, 현장에서는 컨트롤러, 모터등의 장비를 실제로 구동하는 컨트롤러가 존재하게 되고, 이들 컨트롤러를 동작시키는 프로그램을 구축하여 실제 현장 시스템을 구현하게 된다. 하지만, 이런 컨트롤러 및 장비들은제조업체별, 모델별로 동작 방식과 사용법이 다를 수 있기 때문에 그 장비에 숙련된 전문가가 아니면 시스템을 구축하는 것 뿐 아니라 유지보수 및 수정이 어려워지게 된다. 더욱이 사용자는 컨트롤러를 직접 제어 해야 하는 부담을 안게 된다. SCADA 프로그램은 이런전문성을 지양하고, 편리하고 통합된 화면 구성으로 사용자가 편리하게 시스템을 모니터링하고 제어할 수 있는 솔루션을 제공해준다.

● CIMON SCADA HMI 프로그램은 위에서 언급한 SCADA 시스템을 구성하는데 있어서,응용 프로그램을 만들 줄 모르는 사용자라도 쉽게 SCADA 시스템을 구축할 수 있도록 제공되는 툴임.

CIMON SCADA HMI 정기교육 자료

Page 4: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

SCADA 개요

¨ SCADA 란?

¤ Supervisory Control and Data Acquisition

¤ 감시 제어 데이터 수집 시스템

¨ CIMON SCADA HMI 프로그램

¤ CimonD

n편집을 위한 프로그램

¤ CimonX

n실행을 위한 프로그램

● SCADA의 정의Supervisory Control and Data Acquistion의 집중 원격감시 제어 시스템 혹은 감시 제어데이터 수집 시스템을 말한다. SCADA 시스템은 통신 경로상의 아날로그 또는 디지털 신

호를 사용하여 원격장치의 상태정보 데이터를 원격 소장치(remote terminalunit)로수집, 수신·기록·표시하여 중앙 제어 시스템이 원격 장치를 감시 제어하는 시스템을 말하며 발전·송배전시설, 석유화학 플랜트, 제철공정 시설, 공장 자동화 시설 등여러 종류의 원격지 시설 장치를 중앙 집중 식으로 감시 제어하는 시스템이다.

● CIMON SCADA HMI 프로그램CIMON SCADA 프로그램은 CimonD, CimonX 프로그램으로 나누어 진다. CimonD 프로그램은 프로젝트 생성, 편집 및 수정이 가능한 프로그램이며, CimonX는 이미 만들어진프로젝트를 실행하는 프로그램이다. 편집과 실행에 대한 프로그램을 따로 구분한 이유는, 일반적으로 시스템이 구축되는 현장에서는 SCADA 전문가가 상주하지 않기 때문이며, 전문가가 아닌 일반 사용자가 프로젝트를 수정하여 시스템 오 동작을 발생시키는 일이 없도록 하기 위함이다.

4

CIMON SCADA HMI 정기교육 자료

Page 5: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그 수와 목적에 따른 키락의 종류

¨ DS (Development System)

¤ 시스템 개발 및 실행

¤ 실 태그의 개수(75, 150, 500, 1500, FULL)로 분류

¨ RS (Runtime System)

¤ 시스템 실행

¤ 프로젝트 수정 방지 목적

¤ RS 버전의 키락 장착 시 DS 버전의 키락 태그 수 일치

● CIMON SCADA 프로그램은 ㈜싸이몬 회사 홈페이지에서(https://www.cimon.com) 무료로 다운로드 받을 수 있으나, 실제로 현장 시스템에 설치하고 운용하기 위해서는, 키락제품을 구입해야 한다.

● 키락의 타입키락은 Parallel 포트 및 USB 형태의 키락을 제공 함.

● 키락의 종류키락은 구축할 CIMON SCADA 시스템의 규모와 기능에 따라 여러 제품모델로 나뉘어진다. 기능에 따라 키락은 DS 버전과 RS 버전으로 나뉘어 지는데, DS 버전이 장착된 PC는CimonD, CimonX 프로그램 둘 다 실행이 가능하다. 즉, 시스템 개발, 편집, 실행이 가능해지는 것을 뜻한다. RS 버전이 장착된 PC는 CimonX 만 실행 가능하기 때문에 시스템 실행만 가능하다. 또한, 규모에 따라 키락은 태그 수에 따라 모델이 나뉘어 진다.

● 주의 사항현장에 RS 버전의 키락을 장착할 경우, 프로젝트를 저장했던 DS 버전의 태그 수를 확인해야 한다.만약, 500 태그 DS 버전의 키락으로 프로젝트를 저장했을 경우에현장에 사용 가능한 키락은 500 태그 이하(같거나 작은)의 RS 버전만 장착 가능하다.

5

CIMON SCADA HMI 정기교육 자료

Page 6: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

용도에 따른 키락의 종류

¨ WS (Web version System)¤ 현장이 아닌 외부에서 감시, 제어¤ MS Internet Explorer(웹 브라우저)를 통한 감시

¨ CS (Web Control Server)¤ 자체 제공하는 클라이언트 프로그램을 통한 감시¤ 제어 가능

¨ VS (Web View Server)¤ VS 버전과 동일하지만 감시만 가능

¨ Mobile( iOS / Android )¤ DS 버전 키의 옵션¤ iOS, Android 장비에서 SCADA 감시,제어가 가능한 솔루션

6

● CIMON SCADA 프로그램으로 프로젝트를 만들고 시스템을 구축할 때, 시스템을 현장이 아닌 외부에서도 감시 하거나 제어 하고자 할 때는 그에 맞는 키락을 현장 PC에 장착해야 한다. WS, CS, VS 버전이 존재 하는데, 외부 접속에 대한 가능한 동시 접속자 수(2, 5, 10, FULL)에 따라 모델이 나뉘어 진다.

● 참고로 WS 키락은 DS Full 버전뿐이며, VS/CS 키락은 태그 수(150, 500, 1500, FULL)로도 모델이 나뉘어 진다.● CS/VS 키는 DS 의 기능도 포함하고 있다.

● Mobile 옵션 키락은, SCADA 프로그램과 부수적으로 모바일 서버라는 프로그램을 동시에 운용해야 한다.

● 위의 사항은 추후 정책적으로 변경될 수 있으며, 모델에 대한 자세한 정보를 얻기 위해서는 본사 영업팀 혹은 대리점을 통해 확인 가능 함

CIMON SCADA HMI 정기교육 자료

Page 7: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

WS와 CS/VS의 실행

WS 버전 키락

CS/VS 버전 키락

MS 익스플로러 인터넷 창으로 실행

Cimon View 프로그램으로 실행

7

● 현장에 CIMON SCADA가 설치되고 운용되는 PC에 WS 버전의 키락이 장착된 경우, 외부의 클라이언트 PC에서는 MS에서 제공하는 익스플로러(인터넷 창)에서 접속하여 현장모니터링 및 제어를 한다. WS 버전이 아닌 CS/VS 버전의 키락이 장착된 경우, 외부의 클라이언트 PC에서는 ㈜싸이몬에서 배포하는 CIMON VIEW 프로그램을 실행하여 모니터링및 제어를 한다.

● WS 혹은 CS/VS 버전의 키락은 현장의 SCADA서버 PC에 장착이 되며, 접속하는 클라이언트 PC에서는 키락을 장착할 필요가 없다.

CIMON SCADA HMI 정기교육 자료

Page 8: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

2. 핵심 용어 설명

8

CIMON SCADA HMI 정기교육 자료

Page 9: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그, 데이터베이스 및 I/O 디바이스

컨트롤러1

어드레스

컨트롤러2

어드레스

서로 상이 태그 이름 종류

공통 단위로 변환

데이터베이스

I/O 디바이스

● CIMON SCADA에 서로 다른 컨트롤러 혹은 장비가 연결된 경우, 각 장비들은 저마다의 어드레싱 체계와 데이터 타입을 가진다. CIMON SCADA의 I/O 디바이스 모듈은 이런서로 다른 어드레싱과 데이터 타입을 사용하기 쉽도록 표준화하여 태그라는 단위로 표현한 후 이를 데이터베이스에 저장한다. 이런 태그들은 각 장비의 한 어드레스에 할당되어하나의 데이터를 실시간으로 저장한다.

9

CIMON SCADA HMI 정기교육 자료

Page 10: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

페이지와 오브젝트

화면의 전환

페이지

오브젝트

● 페이지는 화면을 구성하는 기본 단위로서, 모니터 상에 나타나는 하나의 화면을 뜻한다. 만약 현재 모니터 화면을 사라지게 하고 다른 화면을 보여주어야 하는 경우, 일종의버튼을 그린 후 그 버튼을 눌렀을 때 다른 화면으로 전환하도록 그리면 된다. CIMON SCADA에서는 각 화면들은 페이지라고 하며, 버튼 그림은 오브젝트라는 명칭을 사용한다.

10

CIMON SCADA HMI 정기교육 자료

Page 11: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습2-1. 프로젝트 개념 및 생성

¨ 하나의 시스템을 구성하는 단위

I/O 디바이스

데이터베이스

페이지

네트워크

기타스크립트, 보고서, 일정관리, 사용자 보안등…

프로젝트

● CIMON SCADA를 이용하여 현장의 시스템을 개발 하고자 할 때, 그 시스템을 구성하는 페이지, I/O 디바이스 장비들, 태그들을 저장하는 데이터베이스등을 모두 취합하여 하나의 프로젝트라고 표현한다. 시스템을 구축하기 위한 제일 첫 단계로서, 프로젝트를 생성한다.

● 실습 #2-11. CimonD에서 [파일] 메뉴의 [새 프로젝트] 메뉴를 클릭하여 프로젝트를 생성한다.2. 프로젝트 이름은 “TestPrj” 라고 입력하고 “다음” 버튼을 클릭한다.3. “마침” 버튼을 클릭하여 프로젝트 생성을 완료한다.4. 생성된 프로젝트의 경로를 확인하기 위해서는 [도구] 메뉴의 [프로젝트]를 선택하고,

나타나는 대화상자의 하단에 표시되는 “프로젝트 경로”를 확인 한다.

11

CIMON SCADA HMI 정기교육 자료

Page 12: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

프로젝트, 키락 정보의 저장

3. 저장 버튼 클릭

1. DS 버전의 키락 삽입.

2. 데이터베이스 창을 연다.

반드시 데이터베이스 창이화면 맨 위에 위치해야 함

● 생성, 편집 된 프로젝트를 현장의 CimonX에서 실행하기 위해서는 해당 프로젝트를 저장해야 한다. 프로젝트를 저장하기 위해서는 무조건 DS 버전의 키락이 필요하며, 키락을장착했으면 그 다음 [도구]메뉴의 [데이터베이스] 메뉴를 선택한다. 데이터베이스 창이화면에 로딩된 상태에서 [저장] 버튼을 눌러야 키락 정보를 프로젝트에 저장할 수 있다.● 키락 정보의 저장 시 키락의 태그 수는 현재 편집되는 프로젝트의 실 태그 수보다 같거나 커야 한다. 예를 들어 500-DS 키 사용시 프로젝트 실 태그가 500태그를 넘길 경우프로젝트에 키락 정보가 저장되지 않아 데모프로젝트로 저장되니 유의해야 한다.

12

CIMON SCADA HMI 정기교육 자료

Page 13: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

키락 정보의 확인

현재 프로젝트에 저장되어 있는키락의 정보.

“Key – NO KEY”으로 나타나는 경우, 프로젝트를 다시 저장해야 함

[도움말] > [CimonD 정보] 메뉴 클릭

● 프로젝트가 제대로 저장되었는지 확인하려면, [도움말] 메뉴를 클릭하여 [CimonD 정보]로 들어가면 된다. 이 때 위와 같은 로고 화면이 나타나며 키락이 제대로 저장되었으면위의 그림처럼 왼쪽 하단에 키락 정보가 표시 된다.

13

CIMON SCADA HMI 정기교육 자료

Page 14: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그 데이터 베이스 정보 확인

실제 태그 수에 포함 되는 태그의 수( 실제 장비에서 값을 가져오는 태그)

•[도구] 에서 [데이터 베이스]를 연다• 창이 열려진 상태에서 [도움말] 에서 [데이터베이스 관리기 정보]를 연다• 현재 사용 중인 태그의 전체 요약 내용이 나온다

14

CIMON SCADA HMI 정기교육 자료

Page 15: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

3. 화면 작화 하기

15

CIMON SCADA HMI 정기교육 자료

Page 16: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. 화면 작화 하기

툴을 이용

● 하나의 화면을 만들고 작화 하기 위해서는 페이지를 만들어야 함. 페이지를 생성하기위해서는 [파일] 메뉴에서 [새 페이지] 항목을 선택한다.

● 편집 후 저장하기 위해서는 [파일] 메뉴에서 [저장] 항목을 선택하여 저장한다. 새로운페이지를 만들고 저장 할 때는 프로젝트 폴더의 경로 밑에 저장한다. 만약, 저장된 페이지의 경로가 현재 열린 프로젝트의 경로와 일치하면, 페이지의 제목 표시줄에 제목이 페이지 명으로 표시되고 일치하지 않았을 경우, 페이지의 제목 표시줄에 전체경로가 표시된다.

● 실습 #3-11. [파일] 메뉴의 [새 페이지]를 눌러 페이지를 생성한다.2. [파일] 메뉴의 [저장]을 눌러 페이지를 저장할 때, 현재 프로젝트가 아닌 경로로 페이

지를 저장해 본다. 3. [파일] 메뉴의 [다른 이름으로 저장]을 눌러 페이지를 프로젝트 경로 밑에 “Page 1”

이라는 이름으로 저장한다. 저장 한 후, 페이지의 제목 표시줄에 어떻게 표현되는지확인 해 본다.

4. 위의 그림처럼 “그림 도구”를 이용하여 오브젝트를 화면에 그려 본다.

● 실습 #3-21. [도구] 메뉴의 [CimonX 환경 설정]을 눌러, “Page 1”을 초기화면으로 지정한다.

16

CIMON SCADA HMI 정기교육 자료

Page 17: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-2. 오브젝트 채우기

무늬,질감,그림 및 그라데이션을 설정할 수 있다.

● 채우기를 수행하고자 하는 오브젝트를 더블클릭 하거나 오브젝트가 선택된 상태에서오른쪽 버튼을 누른 후 그림설정을 클릭한다.

● 그림구성->선/채우기를 차례로 선택 후 채움 옆 버튼을 누른다.● 채우기 효과를 클릭하면 무늬,질감,그림 및 그라데이션을 설정할 수 있는 창이 화면에표출된다.● 원하는 효과를 선택한 후 확인을 눌러 오브젝트에 해당 채우기 효과가 적용되었는지확인한다.

17

CIMON SCADA HMI 정기교육 자료

Page 18: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-3. 라이브러리 사용하기

도구 ->라이브러리에 라이브러리를 추가 할 수 있다.

● Cimon Scada 다양한 라이브러리를 사용 합니다.● 그림 -> 라이브러리를 선택하여 Tank_S_New에 001번 라이브러리를 화면에 배치 합니다.

18

CIMON SCADA HMI 정기교육 자료

Page 19: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-4. 출몰 설정하기

¨ 출몰과 점멸 “디지털1” 태그의 값이 1이 되면 출몰

10 X 100 msec = 1 초 마다 깜박임

● 출몰은 태그의 값에 따라 해당 오브젝트를 보이거나 숨긴다. 점멸은 오브젝트를 태그값에 따라서 지정된 주기로 점멸 시킨다.

● 실습 #3-31. 위의 그림처럼 “출몰” 버튼을 선택하고 태그이름에 “디지털1”이라고 입력한다.2. “등록” 버튼을 누르면 “디지털1 태그는 데이터베이스에 존재하지 않습니다. 데이터

베이스에 추가할까요?”라는 메시지가 화면에 나타나는데, “예”를 누른다.3. “태그 편집” 대화 상자가 나타나면 태그 종류에 “디지털”을 선택하고, “등록” 버튼을

눌러 태그를 생성한다.4. CimonX를 실행하여 해당 태그의 값이 On/Off 될 때 화면에서 오브젝트가 어떻게

되는지 확인 한다.

19

CIMON SCADA HMI 정기교육 자료

Page 20: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-5. 수직 변화 설정하기

¨ 수직 변화

“아날로그1” 태그의 값에 따라해당 오브젝트의 세로 길이 변경

? 로 설정되어 있다는 것은“아날로그1” 태그에 설정되어 있는최소값 최대값을 그대로 사용하겠다는뜻

● 수직/수평 변화는 오브젝트를 태그 값에 따라 수직/수평 방향으로 오브젝트 크기 자체를 변화 시킨다.

● 실습 #3-41. 위의 그림처럼 “수직 변화” 버튼을 선택하고 태그이름에 “아날로그1”이라고 입력한

다.2. “등록” 버튼을 누르면 “아날로그1 태그는 데이터베이스에 존재하지 않습니다. 데이

터베이스에 추가할까요?”라는 메시지가 화면에 나타나는데, “예”를 누른다.3. “태그 편집” 대화 상자가 나타나면 태그 종류에 “아날로그”를 선택하고, “등록” 버튼

을 눌러 태그를 생성한다.4. CimonX를 실행하여 해당 태그의 값이 On/Off 될 때 화면에서 오브젝트가 어떻게

되는지 확인 한다.5. 수평 변화도 실습해 본다.

20

CIMON SCADA HMI 정기교육 자료

Page 21: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-6. 수직 이동 설정하기

¨ 수직 이동

“아날로그1” 태그의 값에 따라해당 오브젝트의 세로 위치 변경

● 수직/수평 이동은 오브젝트를 태그의 값에 따라 수직/ 수평으로 이동시킨다.

● 실습 #3-51. 위의 그림처럼 수직 이동 기능을 적용해 보고, CimonX를 실행하여 해당 태그의 값

을 바꾸어 봤을 때 화면에서 오브젝트가 어떻게 되는지 확인 한다.2. 수평 이동도 실습해 본다.

21

CIMON SCADA HMI 정기교육 자료

Page 22: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-7. 수직 채움 설정하기

¨ 수직 채움“아날로그1” 태그의 값에 따라해당 오브젝트의 내부 영역을파란색으로 채움

● 수직/ 수평 채움은 태그의 값에 따라 오브젝트의 내부를 지정한 색으로 채운다.

● 실습 #3-61. 위의 그림처럼 수직 채움 기능을 적용해 보고, CimonX를 실행하여 해당 태그의 값

을 바꾸어 봤을 때 화면에서 오브젝트가 어떻게 되는지 확인 한다.2. 수평 채움도 실습해 본다.

22

CIMON SCADA HMI 정기교육 자료

Page 23: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-8. 수직 끌기 설정하기

¨ 수직 끌기사용자가 해당 오브젝트를 화면에서드래그(끌기) 하면“아날로그1” 태그의 값을 변경함.(화면 조작에 의한 능동의 의미)

● 수직/ 수평 끌기는 마우스를 이용하여 해당 오브젝트를 드래그(끌기)했을 때, 그 이동한 크기를 계산하여 태그에 값을 쓰는 기능임

● 실습 #3-71. 위의 그림처럼 수직 끌기 기능을 적용해 보고, CimonX를 실행하여 오브젝트를 끌었

을 때, [보기]메뉴의 [데이터베이스]에 나타나는 태그 값이 변경되는지 확인해 본다.2. 수평 끌기도 실습해 본다.

23

CIMON SCADA HMI 정기교육 자료

Page 24: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-9. 색 변화 설정하기

¨ 색 변화

“아날로그1” 태그의 값이100이상 200 미만이 되면노란색

“아날로그1” 태그의 값이200이상이 되면 노란색

● 색 변화는 입력한 태그의 값에 따라 해당 오브젝트를 미리 지정한 색으로 변화시킨다.

● 색 변화에 설정된 조건들은 아래로 내려갈수록 우선 순위가 높다. 즉, 위의 그림 처럼설정된 경우엔 빨간 배경 색으로 지정된 조건 항목이 노란색 배경으로 지정된 조건 보다우선 순위가 높음(색 변화 조건이 여러 개 만족될 경우, 우선 순위가 높은 것이 적용됨)

● 실습 #3-81. 위의 그림처럼 색 변화 기능을 적용해 보고, CimonX를 실행하여 해당 태그의 값을

변경했을 때, 오브젝트의 색이 변화되는지 확인해 본다.

24

CIMON SCADA HMI 정기교육 자료

Page 25: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-10. 회전 동작 설정 하기

¨ 회전 및 가상운전“아날로그1” 태그의 값을 기준으로오브젝트 회전 각도 변경

가상운전 선택 시“디지털1” 태그는 가동/중지의의미를 가짐

● 회전은 입력한 태그의 값에 따라 오브젝트를 지정한 각도만큼 회전 시킨다.

● 실습 #3-91. 위의 그림처럼 회전 기능을 적용해 보고, CimonX를 실행하여 해당 태그의 값을 변

경했을 때, 오브젝트가 회전되는지 확인해 본다.2. 위의 두 번째 그림처럼 태그 명을 “디지털1”로 변경하고 “가상 운전”을 체크한다. 그

후 CimonX를 실행하여 해당 태그의 값을 변경 했을 때, 오브젝트가 회전되는지 확인해 본다.

25

CIMON SCADA HMI 정기교육 자료

Page 26: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-11. 터치 동작 설정하기(1)

¨ 터치( 페이지 열기 와 페이지 전환)

“Page 1.pgx” 페이지를 화면에 띄움

이미 열려있는 페이지를 화면에서모두 제거하고,“Page 1.pgx” 페이지를 화면에 띄움(PC 리소스의 낭비를 최소화)

● 터치는 오브젝트를 마우스 혹은 키보드로 터치 시 미리 정의된 동작을 실행한다.

● 터치 동작은 페이지 열기, 닫기, 전환등과 같이 페이지 화면을 전환할 경우나, 특정 태그의 값을 쓰고자 할 때 주로 사용된다.

● 실습 #3-101. 위의 그림처럼 터치 기능의 페이지 열기와 페이지 전환을 각각 적용해 보고,

CimonX를 실행하여 해당 오브젝트를 클릭했을 때, 각각 화면에 표시되는 것이 어떻게 다른지 비교해 본다.

26

CIMON SCADA HMI 정기교육 자료

Page 27: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-12. 터치 동작 설정하기(2)

¨ 터치( 태그 값 쓰기와 디지털 값 쓰기)

“아날로그1” 태그의 값을 100으로(미리 정해진 고정 값)

“디지털1” 태그의 값을 반전0이면 1로, 1이면 0으로 변경 함

● 실습 #3-111. 위의 그림처럼 터치의 태그 값 쓰기 기능을 적용해 보고, CimonX를 실행하여 해당

오브젝트를 클릭한다. 이 때, 태그의 값이 지정한 값으로 변경되는지 확인해 본다.2. 터치의 디지털 값 쓰기 기능을 적용해 보고, CimonX를 실행한다. 해당 오브젝트를

클릭 할 때마다, 태그의 값이 변경되는지 확인해 본다.

27

CIMON SCADA HMI 정기교육 자료

Page 28: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-13. 데이터 입력 동작 설정하기

¨ 데이터 입력“아날로그1” 태그의 값을 사용자가 임의의 값으로 변경할 수 있음

● 데이터 입력은 마우스나 키보드를 이용하여 오브젝트를 선택할 때, 미리 정의된 대화상자를 화면에 띄워주고 사용자가 값을 입력했을 때 해당 태그에 값을 쓴다.

● 실습 #3-121. 위의 그림처럼 터치의 데이터 입력 기능을 적용해 보고, CimonX를 실행하여 해당

오브젝트를 클릭한다. 이 때, 미리 보기 창과 동일 한 입력 창이 나타나는 지 확인한다.

2. 데이터 입력 창에 값을 입력했을 때, [보기] 메뉴의 [데이터베이스] 항목을 누르고, 해당 태그의 값이 변경되었는지 확인한다.

● 입력 최소값, 최대값최소 최대 범위에 들어가는 것만 값을 쓰고 그 외의 범위에 대해서는태그에 값을 쓰지 않는다한마디로 사용자가 실수로 너무 크거나 작은 것을 입력했을 때 이를막기 위해 설정한다

28

CIMON SCADA HMI 정기교육 자료

Page 29: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-14. CimonX 화면 설정하기

¨ CimonX 표시 설정

¤ 초기 화면 지정 및 메뉴, 시스템 버튼 등의 삭제

“Page 1” 초기 화면 페이지

● CimonD 프로그램에서 [도구]메뉴의 [CimonX 환경 설정] 항목을 누르면, 위의 그림과같은 대화 상자가 화면에 나타남. 이 대화 상자에서 CimonX 기동 시 맨 처음에 보여줄 초기 페이지를 지정하고 화면 표시 방법을 설정 할 수 있음. 일반적으로 CimonX 프로그램과 페이지의 테두리 및 제목은 표시하지 않음.

● 실습 #3-131. 위의 그림의 대화 상자에 나와있는 “시스템 단축키 Enable “ 항목을 제외 한 모든 체

크항목을 해제 한 후 CimonX를 실행해 본다.2. 다음과 같은 경우는 주의해야 한다.

1. 화면에 CimonX를 종료할 수 있는 적절한 수단(버튼등)을 두지 않은경우 시스템 단축키 Enable 을 해제하면 CimonX 를 종료하지 못해 시스템을 재부팅해야 하는 경우가 생길 수 있다.

29

CIMON SCADA HMI 정기교육 자료

Page 30: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-15. 페이지 화면 설정하기

¨ 페이지 표시 설정

¤ 모든 페이지 별로 각각 설정

● 하나의 화면을 나타내는 페이지의 화면 표시 방법은 각각 [도구]메뉴의 [페이지 환경설정]메뉴를 클릭하여 설정 해야 함. [페이지 환경 설정]에 들어가는 다른 방법으로 페이지에서 우측 버튼 클릭 혹은 마우스 더블 클릭하면 위와 같은 대화 상자가 화면에 나타남

● 실습 #3-141. 위의 그림의 대화 상자에 “시스템 창” 과 “시스템 메뉴”를 선택한 다음, CimonX를

실행하여 해당 페이지가 어떻게 표시되는지 확인 한다.2. 페이지의 크기를 화면크기에 맞게 조절하였음에도 불구하고 상하좌우 스크롤바가

페이지에 생긴다면 해당페이지에 자동조절을 체크해본다.

30

CIMON SCADA HMI 정기교육 자료

Page 31: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-16. 종료 버튼 만들기(1)

도형 오브젝트 (둥근 사각형)

문자열 오브젝트

그룹으로 만듬1. 키보드 Shift 키를 눌러 두 오브젝트를 모두 선택2. 마우스 오른쪽 버튼을 눌러 “그룹” 으로 지정

● CimonX 실행 시 페이지의 화면만 나타나게 하는 경우가 많으며, 위와 같은 화면 종료버튼을 클릭하는 것만 가능하도록 설정 할 수 있음

● 실습 #3-15-11. 위의 그림 처럼 페이지에 사각형 이나 둥근 사각형 오브젝트를 하나 그린다.2. “종료” 문자열 오브젝트를 위의 그림처럼 생성하고 두 개의 오브젝트를 그룹으로 지

정한다.

31

CIMON SCADA HMI 정기교육 자료

Page 32: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-15. 종료 버튼 만들기(2)

1. 터치 동작 “명령식” 선택2. 명령식에 “Exit()” 를 입력

명령식 – Down , Up ???

마우스를 예로 들면, 터치 동작은 마우스 클릭임마우스 클릭 = 버튼 누름(Down) + 누른 버튼을 떼는 동작(Up)으로 구분됨

● 실습 #3-15-21. 그룹으로 지정된 오브젝트를 더블 클릭하면, 위와 같은 그림의 대화 상자가 나타난

다. 대화 상자에서 “터치” 버튼을 누르고 오른 쪽의 동작을 “명령식”으로 선택한다.2. 위의 그림처럼 “명령식 – Down” 항목에 “Exit()” 라고 입력 하고 “등록” 버튼을 눌러

대화 상자를 닫는다.3. CimonX를 실행하여 해당 오브젝트를 클릭하면, CimonX가 종료되는지 확인 한다.

32

CIMON SCADA HMI 정기교육 자료

Page 33: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그 값 오브젝트

태그 값

GRP1.TEST

순수 태그 값

39

● 태그 값 오브젝트1. 고급 오브젝트 중 하나로, 페이지 화면 상에 태그의 실 데이터 값 그 자체를 보고자

할 때 사용함2. 화면 표시 방법

1. ???? 항목은 태그 값을 특별한 화면 표시 변화 없이 순수 값 그대로 표현2. ####.0 에서부터 #,###.000 까지 다양한 수치 형태로 표현 가능3. HHHH 태그의 값을 10진 형식이 아닌 16진 형태로 표현

33

CIMON SCADA HMI 정기교육 자료

Page 34: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-17. 시계 만들기

시계

● 시계 만들기 실습 #3-16

1. 앞에서 만든 태그 값 오브젝트에 태그 이름 대신TimeStr(44) 라는 명령식을 집어 넣는다.

2. 아무런 프로그램을 하지 않음에도 시간이 흘러가는 것을 볼 수 있다.

3. TimeStr 안의 인자로 들어가는 숫자는 도움말=> 검색 => 키워드로TimeStr을 넣어서 확인한다.

34

CIMON SCADA HMI 정기교육 자료

Page 35: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

4. 고정 페이지 실습

35

CIMON SCADA HMI 정기교육 자료

Page 36: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습4-1. 고정 페이지 설정하기

¨ 고정 페이지

¤ 각 페이지에 공통적인 화면 표시

“Page 2” 고정 페이지

“Page 1” 초기 화면 페이지

“Page 3” 두 번째 페이지

● 페이지가 위의 그림 처럼 여러 개 생성되고 각각의 페이지에 공통적인 메뉴를 그려야한다면 , 고정 페이지 기능을 사용하는 것이 편리함. 다만, 해당 프로젝트가 WS 버전의 키락을 사용하는 경우는 고정 페이지를 사용할 수 없음

● 실습 #4-11. 기존에 저장한 페이지 “Page 1” 외에 “Page 2”, “Page 3”이름을 가지는 두 개의 페이

지를 추가로 생성한다.

36

CIMON SCADA HMI 정기교육 자료

Page 37: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습4-2. 고정 페이지 설정하기

터치 동작의 “페이지 열기” 선택 후 “Page 1” 입력

“Page 3” 페이지 열기

● 실습 #4-21. “Page 2” 페이지에 위의 그림과 같이 오브젝트를 추가하여 화면을 구성한다.2. “종료” 오브젝트는 열 다섯 번째 실습내용을 참고로 하여 만든다3. “초기 페이지” 오브젝트에 마우스를 더블 클릭하여 그림 설정 대화 상자를 화면에

띄우고, “터치” 버튼 클릭, “페이지 열기”를 동작으로 선택 후, 페이지 이름에 “Page 1” 이라고 입력한다.

4. 등록 버튼을 누르고 대화 상자를 종료 한다.5. “두 번째 페이지” 오브젝트에 마우스를 더블 클릭하여 그림 설정 대화 상자를 화면

에 띄우고, “터치” 버튼 클릭, “페이지 열기”를 동작으로 선택 후, 페이지 이름에“Page 3” 라고 입력한다.

6. 등록 버튼을 누르고 대화 상자를 종료 한다.

37

CIMON SCADA HMI 정기교육 자료

Page 38: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습4-3. 고정 페이지 설정하기

¨ 고정 페이지(“Page 2”)의 위치 및 크기 설정

0, 0

0, 150

820, 0

820, 150

좌표 수정 후 반드시 적용 버튼 클릭

● 실습 #4-31. “Page 2” 페이지를 더블 클릭하여 “페이지 환경 설정” 대화 상자를 띄운다.2. 대화 상자에서 두 번째 탭인 “위치 설정”을 클릭하면 위와 같은 설정 화면이 나타나

게 된다. 3. 위의 그림에서처럼 편집 위치는 가로 “0”, 세로 “0”을 입력 하고, 크기는 너비 “820”,

높이 “150”으로 입력한다.4. 가운데 “=> 적용” 버튼을 누르고 오른 편 실행 위치에 값이 방금 설정한 가로, 세로,

너비, 높이 값으로 변경 되었는지 확인한다.5. 확인을 눌러 대화 상자를 종료한다.

38

CIMON SCADA HMI 정기교육 자료

Page 39: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습4-4. 고정 페이지 설정하기

¨ 고정 페이지외의 “Page1”, “Page3” 페이지 설정

0, 150 820, 150

820, 666좌표 수정 후 반드시 적용 버튼 클릭

● 실습 #4-41. “Page 1” 페이지를 더블 클릭하여 “페이지 환경 설정” 대화 상자를 띄운다.2. 대화 상자에서 두 번째 탭인 “위치 설정”을 클릭하면 위와 같은 설정 화면이 나타나

게 된다. 3. 위의 그림에서처럼 편집 위치는 가로 “0”, 세로 “150”을 입력 하고, 크기는 너비

“820”, 높이 “516”으로 입력한다.4. 가운데 “=> 적용” 버튼을 누르고 오른 편 실행 위치에 값이 방금 설정한 가로, 세로,

너비, 높이 값으로 변경 되었는지 확인한다.5. 확인을 눌러 대화 상자를 종료한다.6. “Page 3” 페이지도 “Page 1” 페이지에 설정한 값으로 변경한다.

39

CIMON SCADA HMI 정기교육 자료

Page 40: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습4-5. 고정 페이지 설정하기

¨ “Page 2” 페이지를 고정 페이지로 설정

¤ [파일] > [고정페이지] 메뉴 클릭

● 실습 #4-51. CimonD 프로그램에서 [파일] 메뉴의 [고정 페이지]항목을 선택하여 위와 같은 대화

상자를 화면에 보이도록 한다.2. 맨 위의 “Top”을 선택 한 후 “Page 2”로 입력한다.3. 확인 버튼을 눌러 설정을 종료 한다.4. CimonX를 실행해보고 상단에 설정한 “Page 2”가 고정 페이지로 나타나는 지 확인

해 본다.

● 주의 사항1. 고정 페이지로 사용되는 페이지의 이름은 양쪽 끝에 공백 문자를

입력해서는 안됨. 예를 들어, “ Page 2”, “Page 2 “ 혹은 “ Page 2 “ 이런 식으로 입력하면 CimonX는 해당 페이지를 찾지 못하게 됨

2. 고정 페이지로 사용되는 페이지라도 페이지 속성의 위치 설정 값은“Top”, “Bottom”, “Left”, “Right”에 맞춰 수동으로 변경해줘야 한다.

40

CIMON SCADA HMI 정기교육 자료

Page 41: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

5. 트렌드와 데이터 수집

41

CIMON SCADA HMI 정기교육 자료

Page 42: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습5-1. 트렌드 그리기

¨ 경향 감시 그래프 = 트렌드(Trend) 오브젝트

¤ “펜” 이라는 기본 단위를 사용

● 트렌드는 경향 감시 그래프라고도 한다. 페이지 화면에서의 태그의 값을 수치 형태가아닌 그래프의 형태로 표시하고자 할 때 사용함

● 트렌드는 펜이라는 기본 단위를 사용하는데, 펜은 하나의 태그와 매핑 되며 트렌드 오브젝트내에 색으로 지정하고 그 값을 점과 선등으로 표현 된다.

● 실습 #5-11. 그림 도구에 있는 트렌드(경향 감시 그래프) 오브젝트를 선택한다.2. “Page 3” 페이지에 마우스를 클릭하면, “트렌드 설정” 대화 상자가 화면에 표시된다.3. 이름에 “트렌드1” 이라고 입력한 후, 하단의 “등록”버튼을 눌러 대화 상자를 종료한

다.4. 위의 그림과 같은 오브젝트가 화면에 표시되는지 확인한다.5. 오브젝트를 다시 더블 클릭하여 “트렌드 설정” 대화 상자를 화면에 표시하고, 대화

상자의 “펜 설정” 탭으로 이동한다.6. 첫 번째 태그이름을 입력하는 곳에 태그이름을 “아날로그1”이라고 입력하고, 오른쪽

색 버튼을 눌러 노란색으로 지정한다.7. “등록” 버튼을 눌러 대화상자를 종료하고, CimonX를 실행하여 노란색으로 지정한

펜이 트렌드 오브젝트에 표시되는지 확인 한다.

42

CIMON SCADA HMI 정기교육 자료

Page 43: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습5-2. 트렌드 속성

¨ 경향 감시 그래프의 속성

도구 모음

감시 영역

수집 영역

범례

그리드

눈금자

● 오브젝트를 더블 클릭하여 “트렌드 설정” 대화 상자를 화면에 표시하면, 위의 그림에서 빨간색으로 표시된 각각의 항목을 설정할 수 있음.

● 실습 #5-21. 오브젝트를 더블 클릭하여 “트렌드 설정” 대화 상자를 화면에 표시하고, 대화 상자

의 “도구모음설정” 탭으로 이동한다2. “도구모음표시” 항목을 선택한 후 “등록” 버튼을 눌러 대화 상자를 종료 한다.3. CimonX를 실행하여 해당 트렌드 오브젝트에 “도구모음”이 나타나는지 확인한다.

43

CIMON SCADA HMI 정기교육 자료

Page 44: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

경향 감시 그래프와 데이터 수집

¨ 실시간 트렌드와 히스토리컬 트렌드

¤ 펜의 태그가 데이터 수집 모델을 적용하게 되면

¤ 히스토리컬 트렌드로 전환 가능 해짐

히스토리컬 전환 버튼

● 트렌드의 강력한 기능 중 하나는 히스토리컬 트렌드로 전환할 수 있다는 것인데, 히스토리컬 트렌드로 전환 되면, 펜으로 등록된 태그의 과거 값 변동 추이를 모니터링 할 수있음

● 트렌드를 히스토리컬 트렌드로 전환되도록 하기 위해서는, 펜으로 등록된 태그를 “데이터수집” 모델 적용을 해야 함.

● 만약 “데이터 수집” 모델을 적용한 태그를 펜으로 등록하였으면, 위의 그림처럼 “도구모음” 버튼으로 히스토리컬 트렌드로 전환 할 수 있게 됨.

● “데이터 수집” 모델을 적용하기 위해서는 먼저 모델을 생성해야 하며,이는 CimonD 프로그램에서 [도구] 메뉴 클릭, [데이터수집] 메뉴를 클릭하여 생성할 수있음

44

CIMON SCADA HMI 정기교육 자료

Page 45: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습5-3. 데이터 수집 모델 만들기

빈칸일 경우, 자동으로프로젝트의 폴더에 “모델1” 폴더를 생성

저장경로와 보관경로는다르게 지정해야 함

10개를 넘어서는 순간가장 오래된 파일을보관경로에 옮긴 후 삭제

● 실습 #5-31. [도구] 메뉴의 [데이터수집] 메뉴를 클릭하여 위의 그림과 같은 대화상자를

띄움2. 수집모델이름은 “모델1”로 입력3. 수집방법은 “정주기로 수집” 선택4. 수집주기는 “1” 입력5. 파일생성방법은 “1개월 간격” 선택, 최대파일수는 “10” 입력6. 저장방법은 “보관후 겹쳐쓰기” 선택, “D:\백업폴더\” 로 입력 ( 해당 폴더는

미리 생성 해 놓아야 함)7. 대화 상자의 오른 쪽에 위치한 “추가” 버튼을 누르고, 대화 상자 왼쪽 항목

에 “모델1”이라는 항목이 나타나는 지 확인8. 대화 상자를 닫고, [도구] 메뉴의 [데이터베이스]에 들어감9. “아날로그1” 태그를 더블 클릭하여 태그 편집 대화 상자를 화면에 띄우고,

“고급 설정” 탭으로 이동, 하단의 데이터수집에 방금 생성한 “모델1”을 선택, 등록 버튼을 눌러 대화 상대를 종료 함

10. CimonX를 실행 한 후, 해당 프로젝트 폴더 밑에 “모델1”이라는 폴더가 생기는 지 확인한다.

11. 트렌드 오브젝트의 도구모음 중 “||” 버튼을 눌러 히스토리컬 트렌드로 전환되는지 확인한다.

45

CIMON SCADA HMI 정기교육 자료

Page 46: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 5-4 데이터 수집 파일 텍스트 전환

CimonD 에서 설정 CimonX 에서 파일 선택 텍스트 파일 출력

• 버튼을 하나 만든다• 버튼 동작에 LogFileDialog() 라는 명령식을 써준다• CimonX 를 동작시키고 버튼을 누른다• 텍스트로 변환할 “c l d” 파일을 선택한다• 버튼 목록에 나와있는 변환 버튼을 누르면 텍스트 형식의 파일이

완성된다

46

CIMON SCADA HMI 정기교육 자료

Page 47: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

6. CIMON PLC 통신 실습

47

CIMON SCADA HMI 정기교육 자료

Page 48: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

프로토콜

미국 사람 인도 사람

통역사

¨ 이 기종간의 통신을 위한 규약

● 프로토콜은 서로 다른 이 기종간의 통신을 하기 위한 일련의 규약을 뜻함. 위의 그림을예로 들면, 미국 사람과 인도 사람이 대화를 하려면 서로의 자국어로 대화를 할 수 없으며, 통역사를 통해서만 대화를 할 수 있음.

● 이를 컴퓨터 장비와 장비간의 통신으로 생각하면 됨. 만약 A라는 장비가 AL이라는 통신 언어 사용하고, B라는 장비가 BL라는 통신 언어를 사용할 때, A와 B 장비는 직접적으로 통신 할 수 없음. 통신을 하기 위해서는 이들 두 언어를 해석하고 변환할 수 있는 통역사 프로그램이 필요해진다. CIMON SCADA에서는 I/O 디바이스 모듈이 이 역할을 수행한다.

48

CIMON SCADA HMI 정기교육 자료

Page 49: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

I/O 디바이스

¨ 통신 드라이버

¤ 장비에 맞는 프로토콜을 구현하는 프로그램

PLC S

● 일반적인 I/O 디바이스 모듈(프로그램)은 위의 그림처럼 CIMON SCADA와 연결할 수있는 모든 장비들에 대한 리스트를 항목별로 유지한다.

● I/O 디바이스의 각 항목들은 “통신 드라이버”라고 한다.

● 예를 들어, 위의 그림처럼 자사에서 개발한 “plcS” 제품을 CIMON SCADA와 연결하고자 한다면, I/O 디바이스 모듈의 여러 항목 중 “㈜케이디티시스템즈 CIMON-PLC Ethernet” 통신 드라이버를 선택한다. 이 통신드라이버는 “plcS” PLC가 사용하는 프로토콜을 구현하고 있다. 만약 CIMON SCADA가 “plcS”에 데이터를 요청하면, 통신드라이버는 이 요청을“plcS”가 이해할 수 있는 프로토콜로 변환하여 “plcS”에 요청한다. “plcS”가 요청을 응답해주면, 통신 드라이버는 다시 이를 CIMON SCADA가 알 수 있도록 적절히 변환해서CIMON SCADA에 알려준다.

● 통신 드라이버를 선택하고 디바이스 이름을 입력하면(위의 대화 상자 참고) 해당 통신드라이버를 사용하는 디바이스를 I/O디바이스에 추가하고 사용할 수 있게 됨● 사용하고자 하는 통신드라이버가 디바이스 종류에 존재하지 않는 경우 기술문의를 통해 해당드라이버의 파일을 받아서 패치를 하면 해당 드라이버 목록이 디바이스 종류에나타남.

49

CIMON SCADA HMI 정기교육 자료

Page 50: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

통신 포트와 스테이션

통신 포트

스테이션1 스테이션2 스테이션3

● CIMON SCADA를 지칭할 때 “통신 포트”라는 명칭을 사용함

● CIMON SCADA와 연결되는 모든 장비는 “스테이션”이라는 명칭을 사용함

● 위의 그림에서처럼, 연결되는 세 개의 장비가 같은 통신드라이버(프로토콜이 같다는것을 의미함)를 사용하는 경우, 하나의 디바이스에 세 개의 스테이션을 만들면 됨

● 만약 세 개의 장비가 서로 다른 통신 드라이버(프로토콜이 다르다는 것을 의미함)를사용하는 경우, 각각에 대한 디바이스를 별도로 생성하고, 각 디바이스에 스테이션을 하나씩 만들어야 함

50

CIMON SCADA HMI 정기교육 자료

Page 51: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

통신블록이 아닌 개별 통신

어드레스 종류

M10 아날로그

M20 아날로그

M30 아날로그

태그 목록M10 요청

M10 = 3000

M20 요청

M20 = 6000

● 통신 블록을 설명하기 전에 개별 통신에 대한 개념을 설명한다.

● 위의 그림에서처럼, CIMON SCADA가 “M10”, “M20”, “M30”를 어드레스로 가지는 실태그들을 가지고 있음

● 개별 통신 방법은 위의 그림처럼, CimonX가 실행 될 때 해당 태그들의 값을 장비로 부터 각각 받아옴

● 위의 방식은, 데이터 통신의 효율성 측면에서 바라본다면 비효율 적임. 통신 해야 할태그의 수가 증가한다면,전체 데이터 수신시간 = (요청 시간+응답 시간) * 태그 수

● 이 때문에, CIMON SCADA는 개별 통신을 기본방식으로 체택하지 않고, 블록 통신을기본방식으로 채택함

51

CIMON SCADA HMI 정기교육 자료

Page 52: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

통신블록을 이용한 통신

어드레스 종류

M10 아날로그

M20 아날로그

M30 아날로그

태그 목록

M10 부터 3개의 데이터 요청

M10 = 3000,M20 = 6000,M30 = 1500

● 블록 통신의 경우 한번의 요청에 여러 데이터를 블록의 형태로 수신한다.

● 블록 통신 방식은, 데이터 통신의 효율성 측면에서 바라본다면 개별 통신의 방식보다효율 적임. 통신 해야 할 태그들을 하나의 블록으로 지정하게 될 경우, 전체 데이터 수신시간 = 요청 시간+응답 시간

52

CIMON SCADA HMI 정기교육 자료

Page 53: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-1. 이더넷 환경 체크

¨ 실행화면

● 실습 #6-1

1) 목적

* 이더넷이 하드웨어적으로 이상이 없는 지 점검한다

2) 내 PC IP 확인 방법 및 Ping Test

* 윈도우 화면에서 [시작]=> [실행] => “cmd“ 라는 명령을 실행* 도스 화면이 뜸* 프롬프트 상에서 “ipconfig” 라는 명령을 실행(대소문자 구분 안함)* 내 PC 이더넷 정보가 나타남* 이더넷 정보 확인 후 “ping [통신하고자 하는 PLC IP]” 실행

53

CIMON SCADA HMI 정기교육 자료

Page 54: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-2. 연습용 키트 통신 실습

¨ I/O 디바이스 생성

㈜케이디티시스템즈CIMON-PLC Ethernet 선택

● 실습 #6-21. [도구] 메뉴의 [I/O 디바이스] 메뉴 선택2. 디바이스 이름을 “디바이스1”로 입력하고, 통신드라이버를 “㈜케이디티시스템즈

CIMON-PLC Ethernet” 으로 선택, “확인” 버튼 클릭

54

CIMON SCADA HMI 정기교육 자료

Page 55: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-3. 연습용 키트 통신 실습

¨ 통신 포트 설정

터치 PC의 설정

터치 PC의 IP 어드레스 입력

● 실습 #6-31. 위의 그림과 같이 “통신포트”탭을 선택하여, IP 어드레스 입력란에 현재 자신의 터치

PC IP 어드레스를 입력 (윈도우 [제어판]메뉴에서 [내 네트워크 환경] 으로 IP 확인가능)

2. “통신 방식” 은 “UDP” 선택3. “통신 Time Out”은 “1”로 설정4. 대화 상자 오른쪽에 위치한 “저장”버튼 클릭하여 저장5. 상단의 “스테이션” 탭 클릭6. 대화 상자 오른쪽에 위치한 버튼 중 “스테이션 추가” 버튼이 활성화 됨. 클릭

55

CIMON SCADA HMI 정기교육 자료

Page 56: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-4. 연습용 키트 통신 실습

¨ 스테이션 설정

터치 PC와 연결되는 연습용 키트의 설정

CM1 – CP4 선택

연습용 키트의 IP 어드레스입력

● 실습 #6-41. 위의 그림과 같이 “스테이션 이름”에 “스테이션1” 입력2. “PLC CPU 종류”는 “CM1 – CP4” 선택3. 대화 상자 중간의 “IP 어드레스 #1”에 PLC에 할당된 IP 어드레스 입력4. “등록” 버튼 클릭 후, “스테이션1”이라는 항목이 나타나는 지 확인5. “스테이션1” 항목을 선택 후 대화상자 오른쪽에 있는 “통신블록 추가” 버튼 클릭

56

CIMON SCADA HMI 정기교육 자료

Page 57: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-5. 연습용 키트 통신 실습

¨ 통신 블록의 등록

Y20으로부터 1개의 데이터를 읽는 통신 블록 등록

M20으로부터 1개의 데이터를 읽는 통신블록 등록

● 실습 #6-51. 위의 그림과 같이 “어드레스”에 “Y” 선택 후, “20” 입력2. “데이터수”는 “1” 선택함. CIMON은 데이터의 기본단위가 WORD임. Y영역은 디지털

접점이므로, 데이터수를 위의 그림처럼 1개만 받아와도 Y20부터 Y2F까지의 16개의비트 를 얻어올 수 있음

3. “통신주기”에 “0.5” 입력4. “등록” 버튼 클릭 후, “스테이션1”이라는 항목 아래에 방금 만든 통신 블록이 나타나

는 지 확인5. 대화 상자 오른쪽에 위치한 “통신블록” 버튼을 다시 클릭하여 “M20”에 대한 통신 블

록도 추가6. “등록” 버튼 클릭 후, “스테이션1”이라는 항목 아래에 방금 만든 통신 블록이 나타나

는 지 확인7. 대화 상자 오른쪽에 위치한 “저장” 버튼 클릭 후, “종료” 버튼을 눌러 I/O 디바이스

설정 완료

57

CIMON SCADA HMI 정기교육 자료

Page 58: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-6. 연습용 키트 통신 실습

¨ 실 태그 생성(1)

Y20~ Y2F 까지의 어드레스를 가지는 디지털 태그 16개 생성

● 실습 #20-51. [도구]메뉴의 [데이터베이스 항목] 누르면 “데이터베이스” 창이 화면에 표시됨2. “데이터베이스” 창의 좌측 최상단에 “태그 생성”버튼 클릭하여 위의 그림과 같은 대

화 상자를 염3. 이름은 “Y20”, 종류는 “디지털”, 실 태그로 생성4. I/O 디바이스는 방금 생성한 I/O 디바이스(“디바이스1.스테이션1”) 선택5. 어드레스에 “Y20” 입력 후 “등록” 버튼을 클릭하여 태그 생성6. 위의 2번과 5번 작업을 반복하여 “Y21” ~ “Y2F”에 대한 디지털 태그 생성

58

CIMON SCADA HMI 정기교육 자료

Page 59: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-7. 연습용 키트 통신 실습

¨ 실 태그 생성(2)

M20의 어드레스를 가지는 아날로그 태그 1개 생성

● 실습 #20-61. [도구]메뉴의 [데이터베이스 항목] 누르면 “데이터베이스” 창이 화면에 표시됨2. “데이터베이스” 창의 좌측 최상단에 “태그 생성”버튼 클릭하여 위의 그림과 같은 대

화 상자를 염3. 이름은 “M20”, 종류는 “아날로그”, 실 태그로 생성4. I/O 디바이스는 방금 생성한 I/O 디바이스(“디바이스1.스테이션1”) 선택5. 어드레스에 “M20” 입력 후 “등록” 버튼을 클릭하여 태그 생성

59

CIMON SCADA HMI 정기교육 자료

Page 60: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습6-8. 연습용 키트 통신 실습

¨ 설정 후 결과 화면

● 실습 #20-71. 등록을 완료하면 위의 그림과 같이 17개의 태그(디지털 실 태그 16개, 아날로그 실

태그 1개)가 추가로 생성된다.

60

CIMON SCADA HMI 정기교육 자료

Page 61: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

7. 보고서 실습

61

CIMON SCADA HMI 정기교육 자료

Page 62: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

보고서

매일측정되는

통계 데이터

● CIMON-SCADA는 Excel이나 Word등의 외부 응용프로그램 및 자체내장기능(엑셀출력)을 이용하여 보고서를 출력할 수 있음.

● 사용자가 지정하는 양식을 Excel이나 Word등의 응용프로그램을 사용하여 작성하여두면, CIMON-SCADA는 정주기, Event 또는 정시에 요구하는 보고서를 출력함.

● 특징

1. 일보, 주보, 월보, 연보를 제공하며 특정한 조건이나 사용자의 명령에 의하여 보고서 출력을 실행할 수 있음.

2. 보고서는 프린터로 인쇄하거나 파일로 저장할 수 있음.

3. 보고서는 엑셀이나 워드 등으로 기본 양식을 작성하며 출력되는 파일형태도 보고서양식파일의 형태와 동일함.

4. 스크립트 언어에서 엑셀 양식에 OLE Automation을 이용하여 직접 데이터를 지정할 수있으므로 기본 보고서 양식작성이나 데이터 설정이 간단함.

5. 엑셀이나 워드에서 편집된 그대로 출력되므로 그림이나 도표 등이 화면에 표시된 대로프린터를 통하여 인쇄되므로 미려한 출력물을 얻을 수 있음.

62

CIMON SCADA HMI 정기교육 자료

Page 63: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

보고서 관련 함수

¨ TLogVal(“태그이름”, “시각값”, “값종류”)

¤ ReportTag.dat 파일에 저장 됨

¤ 3일, 3주, 3월, 10년의 데이터를 저장

● 보고서 기능이 설정되면, 보고서 생성과 관련된 모든 통계 데이터들은 “ReportTag.dat” 라는 파일에 들어가게 됨

● 해당 파일 안에는, 3일 치의 모든 통계데이터와 3주, 3월, 10년 치의 일부 통계데이터가 들어가게 됨. 저장 되는 통계 데이터들은 도움말을 통해 확인 가능함

● [도움말] > [목차] 혹은 [내용] > [내부함수] > “내부함수-종류별” > “보고서 관련 함수” > “TLogVal” 항목을 클릭하여 확인

63

CIMON SCADA HMI 정기교육 자료

Page 64: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #7-1

¨ 보고서 설정

¤태그 속성 지정 - 보고서용 데이터 생성

반드시 체크

● 보고서 기능을 설정하기 위한, 가장 첫 번째 단계는 “보고서용 데이터 생성”이라는 태그 속성을 체크하는 것에서부터 시작

● 보고서에 출력되는 데이터, 즉 태그들은 반드시 해당 속성이 체크되어 있어야 함.

● 아날로그 태그 “ANA1”를 만들 때, 위의 그림과 같이 “보고서용 데이터 생성”에 체크한다.

64

CIMON SCADA HMI 정기교육 자료

Page 65: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #7-2

양식 문서 만들기

● 다음으로, 보고서 출력을 하기 위해 표본이 될 엑셀 양식을 만든다. 예제 에서는 해당파일을 아래와 같이 생성하였음

양식의 이름 “원본양식.xls“저장 경로 “D:\원본양식.xls”

보고서 양식의 종류• 엑셀 워크시트 : Microsoft Excel 정품이 설치되어 있어야 사용가능.( .xls

및 .xlsx 지원)• 워드 문서 : Microsoft Word 정품이 설치되어 있어야 사용가능( .doc 지원)• 가상 엑셀 워크시트 : 자체제공 라이브러리로 보고서 출력( .xls 지원)

65

CIMON SCADA HMI 정기교육 자료

Page 66: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #7-3

[도구] > [보고서] 메뉴 선택

2.

● 세 번째로, [도구] 메뉴의 [보고서] 메뉴를 선택하면 위의 화면과 같이 보고서 설정 창이 나타남

1. 보고서 설정을 아래와 같이 입력한다. (“문자는 입력하지 않는다)

보고서모델이름 모델1보고서종류 일보출력시간 23시 50분보고서 양식 엑셀 워크시트양식 파일 방금 전에 생성한 “원본양식.xls”의 파일 경로를 찾아 입력.출력방법 “파일로저장” 체크저장방법 이름변경저장경로 “D:\보고서”로 지정 (폴더가 없을 경우, 미리 생성해야 함)

2. 입력을 했으면, 위의 그림의 빨간 색 테두리에 있는 “태그등록” 버튼을 눌러 출력하고자 하는 태그들을 등록한다. (다음 절에서 설명)

66

CIMON SCADA HMI 정기교육 자료

Page 67: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #7-4

1.

2.

1. 태그 등록 시, 먼저 위의 그림에서처럼 오른쪽 상단의 Sheet 추가 버튼을 누른다.

2. 버튼을 누르면 위의 그림에서 처럼 조그만 대화상자 입력 창이 나타나게 되는데, 이때 입력하는 Sheet 이름은 앞서 생성한 “원본양식.xls” 의 엑셀시트 이름과 반드시 동일하게 입력해야 함(대소문자까지)

● 등록 버튼을 클릭하여, Sheet 추가를 완료한다. 만약, 추가할 Sheet의 이름이 Sheet1이라면 이미 위의 화면에서 처럼 추가되어 있기 때문에 추가할 필요 없음

67

CIMON SCADA HMI 정기교육 자료

Page 68: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #7-5

● 다음 “Cell 추가” 버튼을 누르면, Cell 편집창이 위의 화면과 같이 나타남. 이곳에 아래와 같이 입력한다.

셀 번호 C3태그이름/연산식 ReportTimeStr(“0일”, 12)데이터 쓰기 선택반복입력 선택 안함

● “등록” 버튼을 눌러서 등록하고, 다시 “Cell 추가” 버튼을 누른다.

셀 번호 C6태그이름/연산식 TLogVal(“ANA1”, “0일0시”, “순간값”)데이터 쓰기 선택반복입력 선택반복횟수 24

● “등록” 버튼을 눌러, 태그 등록을 종료한다.

68

CIMON SCADA HMI 정기교육 자료

Page 69: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #7-6

● 태그 등록 창에서 “등록” 버튼을 눌러, 태그 등록을 마친다.

● 마찬가지로, 보고서 설정 창에서 “등록” 버튼을 눌러, 해당 모델 등록 추가를 완료한다.

69

CIMON SCADA HMI 정기교육 자료

Page 70: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

8. 태그의 속성

70

CIMON SCADA HMI 정기교육 자료

Page 71: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-1. 그룹 태그 만들기

디지털1문자열1아날로그1

그룹1.디지털1그룹1.문자열1그룹1.아날로그1

그룹태그는 태그들을 보기 쉽게 관리할 수 있게 해준다

● 사용자가 데이터베이스를 구축할 때 단일 화면에 많은 태그를 입력할 경우, 운용상에있어 비 효율적임

● 서로 관련된 태그들을 묶어 관리하기 쉽게 하기 위해 그룹 태그를 사용함

● 실습 #8-11. “태그 편집창” 대화 상자를 통해 그룹 태그를 생성해본다.

71

CIMON SCADA HMI 정기교육 자료

Page 72: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그의 일반 속성(1)

¨ 종료 시 최종 상태 저장

¤ Cimon X가 종료시 최종 값을 저장함

¤ Cimon X가 재 실행 되면 저장한 값을 초기값으로 지정

¤ 가상 태그일 때 주로 사용됨

● “종료 시 최종 상태 저장”은 CimonX 종료시 현재 설정된 태그의 값을 데이터베이스파일에 저장하고, 다음에 데이터베이스를 로드하는 경우(CimonX를 재실행하는 경우), 최신으로 수정된 데이터를 초기 값으로 지정하여 데이터를 유지함

72

CIMON SCADA HMI 정기교육 자료

Page 73: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그의 일반 속성(2)

¨ 초기값 디바이스에 쓰기

¤ 실 태그에 사용됨

¤ 고급 설정에서 지정된 초기값을 Cimon X가 실행될 때

¤ 자동으로 연결된 디바이스에 값 씀

¨ 경보 태그로 지정

¨ 보고서용 데이터 생성

¨ 태그 동작을 지정함

¨ 태그 값 변경 시 태그 동작을 실행함

● “초기 값 디바이스에 쓰기”는 실 태그일 경우에만 유효하며, 고급설정에서 지정된 초기값을 CimonX가 실행될 때 디바이스에 쓴다.

● “경보 태그로 지정” 항목은 태그의 값 변화에 따라 경보를 발생시키고자 할 때 사용한다. 이 항목이 선택되면 “경보설정” 탭이 나타나게 됨

● “보고서용 데이터 생성”은 해당 태그가 보고서 출력에 사용될때 반드시 선택되어야 한다.

● “태그 동작을 지정함”은 이 태그와 관련된 추가적인 어떤 동작을 지정하고자 할 때 사용한다. 이 항목이 선택되면 “태그동작” 탭이 나타나게 됨. 일반적으로 “태그값 변경 시 태그 동작을 실행함” 속성과 같이 사용됨

● “태그값 변경 시 태그 동작을 실행함”이 선택되면, 해당 태그의 값이 변경 되었을 때, 지정된 태그 동작이 실행된다. 이 항목은 “태그 동작을 지정함”을 선택했을 경우만 지정가능 함

73

CIMON SCADA HMI 정기교육 자료

Page 74: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

아날로그 태그의 데이터 형태(1)

비트(Bit)

비트 8개 = 바이트(Byte)

비트 16개 = 바이트 2개 = 워드(Word)

0과 1의 2가지 값을 가짐

2의 8승 = 256가지 값을 가짐

2의 16승 = 65536가지 값을 가짐

비트 4개 = 니블(Nibble)

2의 4승 = 16가지 값을 가짐

● 해당 아날로그 태그는 데이터를 어떤 방식으로 저장 할 지가 매우 중요한 요소임.

● 태그 속성의 데이터 저장하는 방식이 다르면, 마치 해당 태그의 값이 의미 없는(쓰레기값)값처럼 보이게 됨

74

CIMON SCADA HMI 정기교육 자료

Page 75: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

아날로그 태그의 데이터 형태(2)

1 0 1 1 부호 없는 형태

부호 있는 형태(2보수)

데이터 형태에따라서,

전혀 다른 값으로 표현됨

-5

11

● 데이터 종류1. 부호 있는/ 없는 값 : 부호가 없는 양의 수를 표현 할 때 Unsigned의 약자인 “U” 를

맨 앞에 붙인다. 2. 데이터 타입은 정수를 표현 하는 INT, BCD, 부동 소수점을 표현하는 Float3. 데이터 종류의 맨 뒤에 있는 숫자는 비트의 크기를 나타낸다.

● 예를 들어, UINT16은 16 비트로 표현되는 부호 없는 양의 정수를 뜻하며 INT16은 16 비트로 표현되는 부호 있는 정수를 뜻함. 음수의 경우 2의 보수 형태를 취한다.

75

CIMON SCADA HMI 정기교육 자료

Page 76: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

경보 태그로의 지정(1)

¨ 디지털 경보

¤ ON 경보

¤ OFF 경보

¤ ON -> OFF 경보

¤ OFF -> ON 경보

¤ ON <-> OFF 경보

● ON 경보는 이전 상태에 관계없이 해당 태그의 값이 1(On) 일 때, 경보가 발생되며, 0(Off)으로 변하면 경보 해제 상태가 됨

● OFF 경보는 이전 상태에 관계없이 해당 태그의 값이 0(Off) 일 때, 경보가 발생되며, 1(On)로 변하면 경보 해제 상태가 됨

● ON -> OFF 경보는 해당 태그의 값이 1(On) 에서 0(Off) 상태의 값으로 전환되는 순간에만 경보가 발생됨.

● OFF -> ON 경보는 해당 태그의 값이 0(Off) 에서 1(On) 상태의 값으로 전환되는 순간에만 경보가 발생됨.

● OFF <-> ON 경보는 해당 태그의 값이 어떤 값이든 변경되는 경우에 발생됨

76

CIMON SCADA HMI 정기교육 자료

Page 77: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

경보 태그로의 지정(2)

¨ 아날로그 경보 종류

¤ 경계 값

n HIHI, HI, LO, LOLO

¤ 이격 값

n기준 값을 가짐

n보조 이격과 주 이격

¤ 변화 값

¨ 경보 감도와 경보 지연

● 경계 값 경보는 태그의 값에 대한 4가지의 경계를 미리 정함. HIHI 와 HI 경계값은 현재 태그의 값이 설정된 경계 값보다 클 때 발생되며, LOLO와 LO 경계값은 현재 태그의 값이 설정된 경계 값보다 작을 때 발생됨. 경계 값의 대소는 HIHI> HI> 해제범위> LO> LOLO 임

● 이격 값 경보는 기준 값을 미리 정해 놓고, 그 기준 값 범위 안에 현재 태그의 값이 있지 않으면 경보를 발생하는 방식. 이격 값의 대소는 주 이격>보조이격> 기준범위> -보조이격> -주 이격

● 변화 값 경보는 태그 값 변동의 폭이 지정된 값보다 클 경우 발생됨.

● 경보감도는 설정 값에 대해 빈번히 경보 발생/해제가 발생할 때, 설정한다.

● 경보감도는 설정 값에 대해 빈번히 경보 발생/해제가 발생할 때, 설정한다.

● 경보지연은 초단위로 지정하며, 지정된 초 동안 그 값이 유지 되야 경보가 발생됨

77

CIMON SCADA HMI 정기교육 자료

Page 78: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

경보 동작 실행

경보발생 시시각적으로인지 하도록ALARM 페이지를 띄운다

• 프로젝트에 ALARM.PGX 파일을 만든다.• 태그 편집 창을 열어서 경보발생 동작에 OpenPage(“ALARM”) 을 쓴다.• 주어진 태그에 값을 1로 만들어서 ALARM.PGX 파일이 뜨는지 확인한다.

• 추가적인 사용 팁• 발생 동작과 같은 한 줄짜리 입력에서 명령문을 한 개 입력 해야 하는 경우, 줄바꿈 문자인 “;;”을 쓴다.• 예) OpenPage(“Alarm1”);;OpenPage(“Alarm2”)

78

CIMON SCADA HMI 정기교육 자료

Page 79: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

경보 동작 해제

경보발생 후경보가 해제되면ALARM 페이지를 닫는다

• 태그 편집 창을 열어서 경보해제 동작에 ClosePage(“ALARM”) 을 쓴다.• 주어진 태그에 값을 1로 만들어서 경보를 띄운 후 다시 값을 0으로 만든다.• 페이지가 닫히는지 확인한다.

79

CIMON SCADA HMI 정기교육 자료

Page 80: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-2. 경보 요약 오브젝트(1)

운영자는 항상 최신경보를 먼저 볼 수있다.

* 메뉴상에서 [그림]=>[경보요약] 을 선택 후 빈 페이지 위에다 클릭해서경보 요약 오브젝트를 만든다.

* 경보 요약 오브젝트 설정 창에서 나머지는 디폴트로 두고 옵션에서[경보 발생시 새 항목으로 추가] 항목을 클릭한다. => 경보 발생은 항상 새 항목이 위로 가 있어야 운영자가 새 경보가 발생했을

때 스크롤을 내리는 불편함을 없앨 수 있다.

* 설정을 다 마치면 [등록] 을 눌러 경보 요약 오브젝트를 완성한다.

80

CIMON SCADA HMI 정기교육 자료

Page 81: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-2. 경보 요약 오브젝트(2)

*경보 태그를 만들고 CimonX 를 실행한다.

경보 태그 만들기1 ) 태그 편집 창에서 [경보태그로 지정] 체크2 ) 경보 항목에서 [경보 발생 ] 탭에서 발생 표시에 운영자가 볼 문구 작성3 ) 경보 항목에서 [경보 해제 ] 탭에서 해제 표시에 운영자가 볼 문구 작성

* 경보 태그에 임의의 값을 집어 넣어서 경보가 발생 했을 때 경보 오브젝트가어떻게 동작하는지 확인한다.

81

CIMON SCADA HMI 정기교육 자료

Page 82: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-2. 경보 요약 오브젝트(3)

*경보 요약 오브젝트와 태그와의 관계

1)경보 요약 오브젝트에서 해당 지역에 체크가 되 있는 지역만 화면에 표시된다.

2)태그 설정 창에서 경보 지역과 경보요약 오브젝트의 지역과 일치해야경보 태그가 경보요약 오브젝트에 나타난다.

3) 경보 요약 오브젝트에서 해당 지역의 체크를 해제하면 그 지역으로 설정된 태그는 보이지 않게 된다.

82

CIMON SCADA HMI 정기교육 자료

Page 83: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

데이터 범위 및 스케일 적용(1)

¨ 내부 데이터와 실 데이터의 범위 설정

예.PLC로 부터 얻은 실 데이터의 값이 999이면,태그에 저장되는 내부 값은 99.9 가 됨

● 데이터 범위(최대/최소 변환 방식) 혹은 스케일 변환 방식을 적용하면 장비로 취득되는 실 값을 변환하여 사람이 쉽게 이해할 수 있는 값으로 변경할 수 있음

● 데이터 범위 설정은 각 아날로그 태그의 “고급설정”에서, 실데이터 최소/최대값과 내부데이터 최소/최대값의 범위를 다르게 설정하면 됨.

● 예를 들어, 위의 그림처럼 실 데이터 영역을 최소 “0”, 최대 “1000”으로 설정하고 내부데이터 영역을 최소 “0”, 최대 “100”으로 설정하면 내부적으로 0 ~ 1000 사이의 실제 값을 0 ~ 100 사이의 값으로 범위 계산을 하게 된다. 반대로, 태그의 값을 55.5로 사용자가변경하게 되면 자동으로 555란 값으로 범위 계산을 해서 장비에 보내짐.

83

CIMON SCADA HMI 정기교육 자료

Page 84: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

데이터 범위 및 스케일 적용(1)

¨ 스케일 값 적용

¤ 취득한 값 * Scale + Offset

내부데이터에 설정된값은 무시됨

Offset의 값에 설정할 게 없어도, 0을 반드시 입력해야 함

● 실 데이터의 값을 사람이 알아보기 쉬운 값으로 변환 할 때, 단순히 범위 계산을 가지고 할 수 없는 경우 스케일 값을 사용함.

● 계산식은 장비로부터 받은 실 값 * 스케일(Scale) + 오프셋(Offset)

● 위와 같이 설정했을 경우를 예를 들면, 장비로부터 들어온 데이터가 1000일 경우 사용자가 보는 태그에 저장되는 값은 100이 됨. 또한, 사용자가 태그의 값을 50으로 변경하면자동으로 스케일 값으로 계산하여 장비에 500이란 값으로 들어가게 됨

● 만약, 오프셋 값에 특별하게 설정할 값이 없다 해도 “0”을 입력해야 함. 입력하지 않을경우, 스케일 값은 적용되지 않고 무시됨

84

CIMON SCADA HMI 정기교육 자료

Page 85: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-3. 태그 값 변경을 이용한 명령식(1)

¨ 특정 태그의 값을 다른 태그에 복사하기

태그 동작을 지정함 선택 후,태그값 변경시 태그 동작을 실행함 체크

● 실습 #8-3-11. “아날로그2” 태그 이름을 가지는 아날로그 가상 태그를 추가로 하나 만든다.2. 기존 “아날로그1” 태그의 일반 속성 중 “태그 동작을 지정함” 항목과 “태그값 변경

시 태그 동작을 실행함” 항목을 선택함. 3. 위 두 항목을 선택 하고, “태그편집” 대화 상자 상단에 “태그동작” 탭을 선택

85

CIMON SCADA HMI 정기교육 자료

Page 86: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-3. 태그 값 변경을 이용한 명령식(2)

¨ 특정 태그의 값을 다른 태그에 복사하기

“아날로그1” 태그의 값에0.1을 곱한 후, 그 결과를 “아날로그2” 태그에씀

아날로그2 = 아날로그1 * 0.1

비교 및 반복과 같은

복잡한 연산은불 가능함.

● 실습 #8-3-21. 위의 그림과 같이 “아날로그2 = 아날로그1 * 0.1” 입력2. “등록” 버튼을 누르고 대화 상자를 닫음3. CimonX를 실행하고 “데이터베이스” 대화 상자를 띄워 “아날로그1” 태그의 값을 바

꿈4. “아날로그2”의 값도 변경되는지 확인

86

CIMON SCADA HMI 정기교육 자료

Page 87: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습8-3. 태그 값 변경을 이용한 명령식(3)

¨ 특정 아날로그 태그(UINT16) 값을 디지털 태그로각 해당 비트에 대입하기

“아날로그1_XX = 아날로그 & 2n >> n“ 공식으로 입력

● 실습 #8-3-31. 디지털 태그 “아날로그1_XX” 태그 등록.2. 위에 그림과 같이 “아날로그1_XX = 아날로그 & 2n >> n” 입력3. CimonX를 실행하고 “데이터베이스” 대화 상자를 띄워 “아날로그1” 태그의 값을 바

꿈.4. “아날로그1_XX”태그 값들이 아날로그1 값에 맞추어 변경되는지 확인.

87

CIMON SCADA HMI 정기교육 자료

Page 88: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

9. 추가 기능 소개

88

CIMON SCADA HMI 정기교육 자료

Page 89: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

도움말 활용하기

[도움말] > [CimonD 도움말] 메뉴 클릭

단축키 “F1”

● CIMON SCADA 가 제공하는 모든 기능(지금까지 실습한 내용을 포함) 및 통신 드라이버들을 도움말에서 확인 할 수 있다.

● 잘 정리된 CIMON SCADA 기능도움말 창에 좌측 상단의 [목차] 혹은 [내용] 탭을 선택하면, CIMON SCADA가 제공하는각각의 기능들을 종류별로 정리 해놓아 사용자가 쉽게 원하는 항목을 찾을 수 있음

● I/O 디바이스별 설정[목차] 탭의 하위 항목에 “I/O 디바이스”를 누르면 “I/O 디바이스 목록 – 제조사 순” 항목이 나타남. 이 곳에서 CIMON SCADA에 연결되는 장비의 설정 및 통신 방법에 대해서 확인할 수 있음

● CIMON SCADA가 제공하는 내부 함수의 검색[목차] 탭의 하위 항목에 “내부함수” 를 누르면 종류별, 알파벳 순으로 쉽게 사용자가 스크립트 함수를 검색할 수 있음

89

CIMON SCADA HMI 정기교육 자료

Page 90: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

사용자 보안

아이디 : 관리자등급 : 49

아이디 : 사용자등급 : 99

터치 보안 등급 : 50

로그인 가능제어 가능

로그인 가능제어 불가능

¨ 사용자 로그인/로그아웃 방식

보안 등급은 1~100 까지 지정 가능. 등급은 1 > 2 … 99 > 100

● 사용자 보안 기능은 CimonD에서 추가된 사용자 계정 및 등급을 이용하여 CimonX 실행 중 터치와 같은 동작 권한을 부여하고자 할 때 사용함.

실습 #251. CimonD의 [도구] 메뉴에서 [사용자 보안] 선택2. 대화 상자 오른쪽에 위치한 “새 사용자” 버튼 클릭3. “사용자 ID”는 위의 그림 처럼 “관리자”로 입력하고 “보안등급”은 “49”로 입력하고

“확인” 버튼 클릭하여 대화 상자 종료4. 이전 실습에서 만들었던 “Page 2” 페이지의 “종료” 버튼 오브젝트를 더블 클릭하여

대화 상자 띄움5. “터치” 버튼 클릭 후, “보안등급설정”을 “50”으로 입력6. CimonX 실행 후 “종료” 버튼 오브젝트를 클릭하여 CimonX가 종료하는지 확인 (정

상 동작은 종료되지 않음)7. CimonX [작업] 메뉴의 [사용자 로그인] 메뉴를 클릭하고 “관리자” 계정으로 로그인8. “종료” 버튼 오브젝트를 클릭하여 CimonX가 종료되는지 확인 (정상 동작한다면

CimonX는 종료됨)

90

CIMON SCADA HMI 정기교육 자료

Page 91: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

OPC

¨ OPC (OLE for process control)

¤ 각종 어플리케이션들이 여러 종류의 프로세스 컨트롤장비(DSC,PLC) 등에서 데이터를 주고받을 수 있는 표준 인터페이스 정의이다.

¤ CIMON-SCADA 는 OPC 서버 및 클라이언트로 동작가능

91

● OPC 서버 설정1. OPC 서버 설정은 윈도우 버전에 따라 설정하는 법이 다름2. 크게 윈도우 XP 이하 버전과, 윈도우 비스타 이후의 버전으로 설정이 나뉘어짐

● 도움말에서의 OPC 서버 설정 방법 검색1. 윈도우 XP 이하 버전인 경우, 도움말에서 검색 가능함. [목차] 탭의 하위 항목에

“CIMON-SCADA용 OPC 서버” 항목을 누르면 구체적인 설정 방법을 알 수 있음2. 윈도우 비스타 이후 버전인 경우, ㈜싸이몬 회사 홈페이지에서

(https://www.cimon.com) 매뉴얼을 다운로드 받을 수 있음

● 도움말에서의 OPC 클라이언트 설정 방법 검색[목차] 탭의 하위 항목에 “I/O 디바이스” 항목을 누르면 “I/O 디바이스 목록 – 제조사 순” 항목이 나타남. 그 안에 “OPC” 항목이 있음. 해당 항목에서 OPC 클라이언트로의 구체적인 설정 방법을 알 수 있음

CIMON SCADA HMI 정기교육 자료

Page 92: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

사용자 라이브러리

● 목적- Cimon 자체에서 제공하는 라이브러리 말고 사용자가 직접 디자인한 라이브러리를

여러 프로젝트에서 공통적으로 쓰고자 할 때 본 기능을 이용한다

● 실습- 페이지화면에 원하는 모양을 그린다- 전체를 그룹화 하고 마우스 왼쪽으로 오브젝트를 선택한다- 메뉴상에서 [도구] – [라이브러리 편집] 을 클릭한다- 원하는 그룹과 이름을 입력하고 확인을 누르면 등록이 완료된다

92

CIMON SCADA HMI 정기교육 자료

Page 93: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

파트 라이브러리

¨ 파트 라이브러리와 스위치 램프

¤ CIMON SCADA 2.8 버전부터 추가된 오브젝트

¤ 파트 라이브러리

n다양한 라이브러리 이미지 제공

¤ 파트 편집기를 이용하여 사용자 별도의 파트 라이브러리를 구축 할 수 있음

¤ 스위치램프

n기존 버전에서는 스위치램프를 구현하는데 불편함

n스위치램프 자체에 대한 오브젝트를 추가함

● 파트 라이브러리 및 스위치램프 설정 방법 검색1. ㈜싸이몬 회사 홈페이지에서(https://www.cimon.com) 매뉴얼을 다운로드 받을 수 있

93

CIMON SCADA HMI 정기교육 자료

Page 94: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

애니메이션 비트맵

¨ 태그에 따라 반응하여 움직이는 그림 오브젝트

● 애니메이션 오브젝트는 편집->애니메이션 비트맵 삽입… 을 통해 이루어짐.

● 여러 장의 이미지를 지정된 간격에 따라 연속으로 보여주는 기능.● 재생 횟수 및 간격을 설정 할 수 있다.(재생횟수 : -1 의 의미는 무한재생을 의미함)

● 도구->애니메이션 편집 툴을 사용하여 사용자의 애니메이션 비트맵 오브젝트를 만들수 있다.

● 펌프 팬 동작,불,연기,알람,진행방향 화살표,컨베이어 움직임등 다양한 동작을 표현할수 있어 작화를 더욱 더 풍부하게 한다.

94

CIMON SCADA HMI 정기교육 자료

Page 95: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

트렌드 판넬

그룹화

CIMON SCADA에서 제공하는 페이지

● 트렌드를 그룹화 하고, 그룹화 된 트렌드를 페이지 형태로 제공

● 대규모 시스템의 수 많은 태그들을 트렌드 오브젝트를 사용하여 모니터링 할 경우, 수많은 비슷한 형태의 페이지들 생성해야 할 수 도 있음. 트렌드 판넬 기능은 이런 경우, 사용자 편의성을 제공

● 도움말에서의 트렌드 판넬 설정 방법 검색[목차] 탭의 하위 항목에 “트렌드 판넬 편집기” 항목을 누르면 구체적인 설정 방법을 알수 있음

95

CIMON SCADA HMI 정기교육 자료

Page 96: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

일정 관리기

¨ 휴일마다, 요일 마다 반복되는 작업이 존재하는 경우 유용

¨ 모델 형태로 일련의 작업들을 생성

¨ 사용자 편의성 제공

¤ 기본적으로 CimonD 상에서 모델 및 일정 편집이 가능

¤ CimonX 상에서도 모델 및 일정 편집이 역시 가능하다.

¤ 또한 스크립트를 사용하여 모델의 동작/정지를 제어할수 있다.

● 도움말에서의 일정 관리기 설정 방법 검색[목차] 탭의 하위 항목에 “일정관리기” 항목을 누르면 구체적인 설정 방법을 알 수 있음

96

CIMON SCADA HMI 정기교육 자료

Page 97: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

멀티모니터

¨ 여러 개의 모니터를 연결하고 서로 다른 페이지 화면을 감시해야 하는 경우 유용

¨ 화면 구성에 따라¤ 단일 프레임 화면구성nN개의 모니터를 하나의 큰 화면으로 사용

n 비디오카드의 기능을 사용하여 설정하며 페이지를 모니터에 맞게 작화.

¤ 멀티 프레임 화면구성nN개의 모니터에 각각의 페이지를 볼 때 사용.

n 프로젝트 폴더내의 DesignEi.Dat 파일을 열어서 편집

n 페이지를 열때 “/Multi=인덱스” 를 수행하여 페이지의 위치를 조절할 수 있다.

● 도움말에서의 멀티 모니터 설정 방법 검색[목차] 탭의 하위 항목에 “멀티모니터” 항목을 누르면 구체적인 설정 방법을 알 수 있음

97

CIMON SCADA HMI 정기교육 자료

Page 98: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

레시피

¨ 제품이나 공정에 따라 상이한 설정값을 관리하는 유용한 기능.

● 레시피는 다음과 같은 기능을 제공함.

● 레시피 다운로드 : 현재 레시피 메모리에 등록된 데이터를 PLC 로 쓰는 동작.

● 레시피 업로드 : 현재 PLC 에 있는 데이터를 레시피 메모리로 읽는 동작.

● 레시피 모델별로 별도의 파일로 저장됨.

● 도움말에서의 레시피 검색[목차] 탭의 하위 항목에 “레시피” 항목을 누르면 구체적인 설정 방법 및 사용법을 알 수있음.

98

CIMON SCADA HMI 정기교육 자료

Page 99: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

CIMON SCADA HMI 교육 자료

기본/ 고급 통합 교육 과정

● 기본 교육 과정 목차

1. CIMON SCADA 개요 --- 22. 핵심 용어 설명 --- 83. 화면 작화 하기 --- 154. 고정 페이지 실습 --- 335. 트렌드와 데이터 수집 --- 396. CIMON PLC 통신 실습 --- 457. 보고서 실습 --- 598. 태그의 속성 --- 689. 추가 기능 소개 --- 85

● 고급 교육 과정 목차

1. 스크립트 --- 972. I/O 디바이스 통신 상태 체킹 --- 1233. SCADA 네트워킹 --- 1264. 기타 고급 기능 및 내부 함수 --- 140

I. 엑셀 파일 생성 --- 141II. 데이터 수집 관련 --- 147III. 트렌드 관련 --- 154

5. ODBC 관련 --- 1666. DB 테이블와 그리드 실습 --- 194

● 부록 목차

1. 파일처리 관련 --- 205

99

CIMON SCADA HMI 정기교육 자료

Page 100: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

1. 스크립트

100

CIMON SCADA HMI 정기교육 자료

Page 101: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

스크립트 모듈

스크립트 소개

¨ Script 모듈

파일 처리 데이터 변환 처리

날짜/ 시간 처리 수학 함수 계산데이터베이스

모듈

보고서 모듈

트렌드 모듈

사용자가사용자가원하는

시스템을구현

Cimon SCADA 프로그램

101

● Basic과 유사한 Language를 지원하여 CIMON-SCADA 내부의 데이터나 Object의 제어는 물론 다른 응용 프로그램과의 연결 가능

● Script에서 제공되는 일반적인 함수 외, CIMON-SCADA 내부 함수를 직접 사용할 수있으므로 다양한 기능 구현 가능.

● CIMON-SCADA 내부 함수에는 태그정보 입출력 함수, 시스템 상태 관련함수 및 SQL 관련함수 등 다수의 함수들이 포함되어 제공됨.

● 각각의 감시화면에 Open/Close시에 동작하는 Script Language를 작성할 수 있음.

● 각 사용자의 Log In/Log Out시에 동작하는 Script Language를 작성할 수 있음.

● 감시화면의 Button이나 Touch에 동작을 정의하는 Script Language를 작성할 수 있음.

● SQL을 지원하는 함수를 제공하여 상용 DB로부터의 데이터 조회나 검색 가능.

● 파일 입출력 및 OLE Object와의 연결을 포함한 500여개의 다양한 함수를 제공.

CIMON SCADA HMI 정기교육 자료

Page 102: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

스크립트의 사용

¨ 생성 및 편집하기

1. 스크립트 만들기

2. 스크립트 저장하기

● CimonD의 [도구] > [스크립트]를 선택하면, 위와 같은 스크립트 창이 화면에나타남.

● 스크립트 만들기• 새로운 스크립트를 등록하고 자 할 때 사용하는 버튼

● 스크립트 저장하기• 스크립트를 작성한 후 해당 버튼을 클릭 시, 작성한 함수에 대해 기본

적인 문법을 검사한 후, 해당 스크립트를 현재 프로젝트에 등록하고 자할 때 사용함.

102

CIMON SCADA HMI 정기교육 자료

Page 103: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

스크립트의 사용

¨ 검사와 등록

¤ 기본적인 문법 검사

● 작성한 스크립트의 검사는 어디까지나 문법에 대한 단순한 검사만 수행 함. 만약 에러 발생시, 위와 같은 대화상자가 화면에 나타나게 되며, 관련 에러가발생한 줄 수와 위치 값을 반환한다.

● 단순 검사만 수행하므로, 사용자가 작성한 논리적인 흐름은 알 수 없음. 만약, 문법 검사는 오류가 없었으나, 실행 중에 오류가 나는 경우가 생길 수 있으며, 이를 예외라 지칭함. 스크립트를 작성할 때는 이런 예외를 처리 할 수 있는 로직을 포함하여 작성하는 것이 좋음.

103

CIMON SCADA HMI 정기교육 자료

Page 104: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-1

¨ 실행 시 발생하는 에러 = 예외(Exception)

● 실습 #1-1 – 함수 실행

1. “문자열태그” 라는 이름을 가진 문자열 태그를 데이터베이스에 생성한다.2. CimonD에서 [도구] > [스크립트] 메뉴를 선택하여, 아래와 같은 스크립트 함

수를 등록한다.

Sub S1()변수1# = "문자열태그"

End Sub

3. CimonX를 실행 한 후, [도구] > [명령식] 메뉴를 선택하여, 아래와 같은 스크립트 함수를 실행한다.

RunScript(“S1”)

4. 실행 한 후, [시스템 상태] 메뉴를 선택하여 창을 열어보면 위와 같은 화면을볼 수 있다.

104

CIMON SCADA HMI 정기교육 자료

Page 105: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-2

¨ Main 함수 생성하기

● 실습 #1-2 - Main 함수

1. “Main” 이름을 가지는 함수는 특수한 함수로서, CimonX 가 실행되면 자동으로 실행되는 함수임

2. 주로, 시간 체크를 수행하거나 특정 태그에 초기값을 할당 할때 많이 사용됨

3. 아래와 같이 스크립트 함수를 작성해보고 CimonX를 실행해본다. 실행하면 “처음 실행 되면 나타납니다”라는 메시지 박스가 화면에 나타남

Sub Main()MsgBox "처음 실행 되면 나타납니다”

End Sub

105

CIMON SCADA HMI 정기교육 자료

Page 106: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

스크립트의 사용

¨ 실행하기

명령식

연산식

● 새로 생성한 함수를 실행하기 위해서는 아래와 같이 입력해야 한다.

RunScript(“내가만든함수”)

● 실행 되고 있는 함수를 중지하기 위해서는 아래와 같이 입력해야 한다.

StopScript(“내가만든함수”)

106

CIMON SCADA HMI 정기교육 자료

Page 107: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

변수의 선언

¤반드시 문자로 시작한다.

¤ (.)을 포함할 수 없다.

¤ 255자를 초과할 수 없다.

¤모든 변수들은 다른 타입의 데이터를 저장할 수 있다.

n타입 명시된 경우는 제외.

¤변수의 내용은 Sub 내에서만 유효하다.

● 명시적 선언Dim 변수이름 [ As 타입]

● 묵시적 선언변수이름이 사용되는 순간 선언된다.

● 지원되는 데이터 타입Ø Empty ( 숫자 변수 인 경우 0, 문자열이면 널(“”)문자로 초기화됨)Ø Null (유효하지 않은 데이터)Ø Boolean ( True or False )Ø Byte ( 0 ~ 255)Ø Integer ( -32768 ~ 32767 )Ø Currency ( -922,337,203,685,477.5808 to 922,337,203,685,477.5807)Ø Long (-2,147,483,648 to 2,147,483,647 )Ø Single ( 단정밀도 부동소수점 포맷)Ø Double (배정밀도 부동소수점 포맷)Ø Date(Time) ( 100년 1월 1일 ~ 9999년 12월 31일)Ø String ( 대략 20억 개의 문자를 담을 수 있다)Ø Object ( 객체를 가지는 데이터 타잎)Ø Error (에러번호를 가짐)

107

CIMON SCADA HMI 정기교육 자료

Page 108: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

변수 타입의 약어

¨ 정수형¤ & : Long ( 4Bytes )

¤ % : Integer ( 2Bytes )

¨ 실수형¤ # : Double (8 Byte)

¤ ! : Single (4 Byte)

¨ 문자형¤ $

¨ 변수에 타입을 명시한 경우에 다른 타입의 값을 대입하거나 오버플로우/언더플로우가 발생하면 스크립트가 중단됨을 주의!!!

● 변수의 타입들

1. 정수형

• Integer예) 변수1% = 10

• Long예) 변수2& = 20

2. 실수형

• Single예) 변수3! = 30.0

• Double예) 변수4# = 40.0

3. 날짜 / 시간형

• Date예) 변수5 = Now

4. 문자형

• String예) 변수6 $= “안녕하세요”

108

CIMON SCADA HMI 정기교육 자료

Page 109: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

스크립트 키워드

¨ VBScript 상에서 예약된 키워드는 변수로 사용할수 없으며 그 목록은 아래와 같다.¤ Empty

¤ IsEmpty

¤Nothing

¤ Is Nothing

¤Null

¤ IsNull

¤ True

¤ False

● VBScript 의 키워드

1. Empty• 변수의 값을 초기화 되지 않은 상태로 만드는 키워드

2. IsEmpty• 변수가 초기화 되지 않았는지 확인하는 키워드

3. Nothing• 객체의 값을 초기화되지 않은 상태로 만드는 키워드• 객체에 값이 있다면 시스템리소스를 해제하는 기능도 한다.

4. Is Nothing• 객체가 초기화되어 있는지 확인하는 키워드

5. Null• 변수가 유효하지 않은 데이터를 가진 상태로 만드는 키워드

6. IsNull• 값이 유효하지 않은 데이터를 가지는지 확인하는 키워드

7. True• 참인 경우의 Boolean 값을 가지는 키워드( 일반적으로 -1)

8. False• 거짓인 경우의 Boolean 값을 가지는 키워드(일반적으로 0 )

109

CIMON SCADA HMI 정기교육 자료

Page 110: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

타입의 형 변환

¨ 숫자를 문자로¤ CStr

¨ 문자를 숫자로¤ CInt

¨ 기타¤ Year, Month, Day

¤Hour, Minute, Second

예) str1$ = CStr(10.5)

예) ana1% = CInt(“10.5”)

예) y1% = Year(Now())

예) h1% = Hour(Now())

● 변수 혹은 데이터의 값 형태를 다른 종류의 타입으로 변환하고 자 할 때 사용함

1. 숫자형태의 값을 문자로 변환하고 자 할때, CStr() 함수를 이용할 수 있음. 예를 들어, str1$ = CStr(10.5) 라고 입력하였을 경우, str1$의 값에는 “10.5”라는 문자열 형태로변환되어 들어가게 됨

2. 숫자형태의 값을 문자로 변환하고 자 할때, CInt() 함수를 이용할 수 있음. 예를 들어, ana1% = CInt(“10.5”) 라고 입력하였을 경우, ana1%의 값에는 정수 값인 10이라는 값이 들어가게 됨

3. 날짜/시간 타입의 경우, 위 그림에서와 같이 Year, Hour 같은 함수를 이용하여 날짜/시간 값을 읽을 수 있음

• Now 또한 함수로서, 이 함수는 현재 실행되고 있는 날짜/시간 값(년월일시분초 )을 리턴해준다.

• 추가적으로, CimonX에서 제공하는 내부함수로 TimeStr() 함수를 사용할 수 도있음

110

CIMON SCADA HMI 정기교육 자료

Page 111: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

변수 타입의 사칙 연산 및 대입

¨ 더하기¤ +

¨ 빼기¤ -

¨ 곱하기¤ *

¨ 나누기(몫)¤ /

¨ 나누기(나머지)¤ Mod

예) ana1# = 30 + 20

예) ana2# = 30 - 20

예) ana3# = 30 * 20

예) ana4% = 30 / 20

예) ana4# = 30 Mod 20

● 변수 혹은 데이터의 값을 계산 하고 자 할 때, 다음과 같은 사칙연산을 통해 계산을수행 할 수 있음

1. + (더하기)2. - (빼기)3. * (곱하기)4. / (나눈 후 몫)5. Mod (나눈 후 나머지)6. 기타 자주 사용되는 함수를 이용한 값의 계산

• Abs(변수) : 변수의 절대값을 계산하고 자 할 때 사용함• Rnd() : 0 에서 1 사이의 범위를 가지는 임의의 실수 값• ASC(변수) : 변수의 아스키 코드값을 계산하고 자 할 때 사용함• Hex(변수) : 변수를 16진수 형태로 변환• Oct(변수) : 변수를 8진수 형태로 변환

111

CIMON SCADA HMI 정기교육 자료

Page 112: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-3

● 사칙연산과 기타 함수를 이용하여 실습을 해본다.

1. 아래와 같이 스크립트 함수를 작성한 후, 실행 해보면 위와 같은 대화상자가 화면에표시 된다.

Sub Main()

변수% = Asc("1")MsgBox CStr(Hex(변수%))

변수% = 변수% + 10MsgBox CStr(Chr(변수%))

End Sub

112

CIMON SCADA HMI 정기교육 자료

Page 113: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-4

¨ 태그 값 읽기와 쓰기

● 태그 값을 읽기 위한 함수는 아래와 같다.

1. 태그 값 읽기

• GetTagVal(“태그이름”)

2. 태그 값 쓰기

• 스크립트 함수 내에서SetTagVal “태그이름”, 설정값

• 연산식 혹은 명령식 내에서SetTagVal(“태그이름”, 설정값)

● 아래와 같이 스크립트 함수를 작성해 본다. 그 결과는 위의 화면과 같이 대화상자가표시된다.

Sub Main()

변수1# = GetTagVal("아날로그태그")MsgBox CStr(변수1#)

SetTagVal "문자열태그", "안녕하세요"MsgBox CStr(GetTagVal("문자열태그"))

End Sub

113

CIMON SCADA HMI 정기교육 자료

Page 114: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

Get 함수와 Set 함수

¨ 연산식 , 명령식

¤ 괄호 ‘(‘, ‘)’ 를 입력해야 함

¨ 스크립트 내부

¤ Get 성질을 띄는 내부함수는 괄호를 입력

n예) GetTagVal, TLogVal, CommStatus 함수 등

¤ Set 성질을 띄는 내부함수는 괄호를 입력하지 않음

n예) SetTagVal, OpenFileDlg, LoginEx 함수 등

● Get 성질을 띄는 내부 함수란, 특정 함수 A를 호출 했을 때 리턴 되는 어떤 값이 존재한다면 그 함수는 Get 성질을 띤 함수이다

● Set 성질을 띄는 내부 함수란, 특정 함수 A를 호출 했을 때 리턴 되는 값은 없고 오로지 특정 명령을 수행하는 함수라면 그 함수는 Set 성질을 띤 함수이다.

● Get 성질을 띄는 내부 함수는 호출되는 곳이 명령식인지, 스크립트 함수 내인지 상관없이 괄호()를 모두 입력해야 함

1. 괄호를 입력 하지 않아도 되는 경우내부함수 호출 인자가 존재하지 않는 경우에는 입력 안 해도 됨. 예를 들어,

Logout() 같은 함수는 괄호를 빼도 됨

● 특수하게, Set 성질을 띄는 내부 함수는 호출되는 곳이 명령식인지, 스크립트 함수 내인지에 따라서 괄호()를 입력해야 하고 입력 안 해야 하는 경우가 있음

1. 연산식 혹은 명령식괄호를 입력해야 함. 예를 들어, LoginEx(“userid”,”userpwd”)

2. 스크립트 함수괄호를 입력하지 말아야 함. 예를 들어, LoginEx “userid”, ”userpwd”

114

CIMON SCADA HMI 정기교육 자료

Page 115: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-5

¨ 비교 구문

¤ If .. Else .. End If 구문

¤ Select .. Case 구문

¨ 비교 연산

¤ AND

¤OR

¤ XOR

¤NOT

AND 결과 OR 결과 XOR 결과 NOT 결과

X Y X Y X Y X

0 0 0 0 0 0 0 0 0 0 1

0 1 0 0 1 1 0 1 1 1 0

1 0 0 1 0 1 1 0 1

1 1 1 1 1 1 1 1 0

● 스크립트 함수 내 태그 혹은 데이터 값에 따라 다른 실행을 해야 하는 경우 사용

● 아래와 같은 스크립트를 작성해 보고, CimonX를 실행하여 결과를 테스트 해본다

Sub Main()

변수1# = GetTagVal("아날로그태그")

if 변수1# = 0 thenMsgBox "0입니다“

elseif 변수1# = 1 ThenMsgBox “1입니다”

elseMsgBox "0, 1이 아닙니다"

end if

End Sub

● CimonX에서 아날로그태그의 값을 0이 아닌 다른 값을 넣어본 후, [도구] > [명령식] 을실행하여 아래와 같이 입력한다. 그 후 결과를 확인해본다

RunScript(“Main”)

115

CIMON SCADA HMI 정기교육 자료

Page 116: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-6

¨ 반복 구문

¤ For [Step] … Next 구문

¤While .. Wend 구문

¤Do [While] … Loop 구문

¤ For Each … Next 구문

● 태그 값 혹은 데이터 값을 취득하여, 특정 반복된 연산을 연속적으로 수행해야 하는경우 사용한다.

1. 아래와 같은 스크립트 함수를 정의하고 만든 후, CimonX를 실행한다.

Sub 반복예제()

합계 = 0for i = 0 to 10

합계 = 합계 + inext i

MsgBox CStr(합계)

End Sub

2. CimonX에서 [도구] > [명령식]을 선택한 후, 아래와 같은 명령을 입력하여 결과를 확인해 본다

RunScript(“반복예제”)

116

CIMON SCADA HMI 정기교육 자료

Page 117: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-7

While .. Wend 구문을 이용한 멀티 처리

¨ CimonX 가 기동되면 1초마다 DIG1 태그를 Toggle 시키고

¨ ANA1 태그는 2초 마다 값을 1씩 증가 시킨다

1. 아래와 같은 2개의 스크립트 함수를 정의하고 만든다.

Sub DigChange()While TRUE

Sleep (1000)a = GetTagVal(“DIG1”)SetTagVal “DIG1”,1-a

wEndEnd Sub

Sub AnaChange()While TRUE

Sleep (2000)a = GetTagVal(“ANA1”)SetTagVal “ANA1”,a+1

wEndEnd Sub

2. Main 함수를 작성한다Sub Main()

RunScript(“DigChange”)RunScript(“AnaChange”)

End Sub

117

CIMON SCADA HMI 정기교육 자료

Page 118: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-8

¨ Exit¤함수 빠져 나가기n ( Exit Sub )

¤반복 구문에서 빠져 나가기n For ~ Next à Exit For

n Do ~ loop while à Exit Do

nWhile ~ wend à 언어에서 지원하지 않음

¨ 연산식 및 명령식에서 사용할 수 없음. 스크립트내부에서만 사용 가능

● Cimon SCADA에서 제공하는 Exit 함수와는 다름

1. 연산식 및 명령식에서 쓸 경우에는 Exit() 함수를 뜻함

2. 스크립트에서만 사용 가능함. 전에 작성한 “반복예제” 함수를 아래와 같이 변경한 후결과를 확인 해본다.

Sub 반복예제()

합계 = 0for i = 0 to 10

if 합계 > 30 thenExit For

else합계 = 합계 + i

end ifnext i

MsgBox CStr(합계)

End Sub

118

CIMON SCADA HMI 정기교육 자료

Page 119: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-9 워드와 비트 변환(1)

¨ 구현 하고자 하는 기능

¤워드 데이터를 비트 데이터로 변환

¨ 구현의 핵심

¤비트연산 And 활용

● 이제까지 실습한 내용을 토대로 사례기반의 응용 실습을 진행해 본다.

● 사례

1. 장비로부터 들어오는 데이터가 16비트 크기의 아날로그임.2. 아날로그의 값은 16개의 조명(전등) On/OFF 신호 데이터를 뜻한다. 예를 들어, 아날로

그의 값이 10(0x0000000000001010)이면 현재 2번과 4번 전등의 상태가 On인 것을뜻함.

3. 각 전등의 On/OFF를 빨간색, 파란색으로 표현하도록 화면을 구성한다.4. 또한, 화면에서 On/OFF를 제어할 수 있도록 해야 한다.

● 해결 방안

1. 이를 위해 장비로부터 들어오는 아날로그 데이터를 16개의 디지털 가상 태그로 분리할 필요가 있음

2. 또한, 분리한 디지털 태그의 특정 값을 변경하면 계산을 수행하여 적절한 아날로그 태그에 값을 써야 함

119

CIMON SCADA HMI 정기교육 자료

Page 120: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-9 워드와 비트 변환(2)

¨ 아날로그 태그와 디지털 태그를 생성

● 아날로그 태그를 아래와 같이 생성한다.

1. 이름 “WORDDATA”2. 데이터형태 UINT163. 태그 종류 아날로그

● 디지털 태그를 아래와 같이 16개 생성한다.

1. 이름 “BIT00” ~ “BIT15”2. 태그 종류 디지털

120

CIMON SCADA HMI 정기교육 자료

Page 121: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-9 워드와 비트 변환(3)

¨ 아날로그 태그의 값을 디지털 태그로 쪼갬

● 아래와 같이 스크립트 함수를 등록한다.

Sub Word2Bit()

worddata = GetTagVal("WORDDATA")

BitMask = 1

For i = 0 To 15

tagstr$ = "BIT"+Format(i,"00")bitdata = worddata AND BitMask

if(bitdata > 0) thenSetTagVal tagstr$, 1

elseSetTagVal tagstr$, 0

end if

BitMask = BitMask * 2Next

End Sub

121

CIMON SCADA HMI 정기교육 자료

Page 122: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-9 워드와 비트 변환(4)

¨ 디지털 태그의 값들을 아날로그 태그로 합침

● 아래와 같이 스크립트 함수를 등록한다.

Sub Bit2Word()

BitMask = 1worddata = 0

For i = 0 To 15

tagstr$ = "BIT"+Format(i,"00")BitVal = GetTagVal(tagstr$)

BitMask = 2^i ‘VB 에서는 비트 연산이 불가능 하다. 왼쪽으로 한 비트 옮기려면‘곱하기 2 오른쪽으로 이동 시키려면 나누기 2를 해야 한다.

worddata = worddata + BitMask * BitVal

Next

SetTagVal "WORDDATA",worddata

End Sub

122

CIMON SCADA HMI 정기교육 자료

Page 123: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-9 워드와 비트 변환(5)

1.

2.

● 위에서 등록한 함수들을 각각의 태그들에서 태그 값이 변경되면 수행되도록 태그 동작을 설정한다.

1. 아날로그 태그(WORDDATA)• “태그 동작을 지정함” 체크• “태그값 변경시 태그 동작을 실행함” 체크• “태그동작” 탭에 아래와 같이 입력

RunScript(“Word2Bit”)

2. 16개의 디지털 태그 각각에 아래와 같이 설정한다.• “태그 동작을 지정함” 체크• “태그값 변경시 태그 동작을 실행함” 체크• “태그동작” 탭에 아래와 같이 입력

RunScript("Bit2Word")

123

CIMON SCADA HMI 정기교육 자료

Page 124: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

태그 변수 값 읽기와 쓰기

¨ GetTagValEx(“태그이름”, “태그변수”)

¤예) str1$= GetTagValEx(“아날로그태그, “DESC”)

¨ SetTagValEx(“태그이름”, “태그변수”, 값)

¤예) SetTagValEx “아날로그태그, “DESC”, “주석입니다”

● 자주 사용되는 태그 변수의 종류

1. NAME : 태그의 이름2. DESC : 태그의 주석3. TYPE : 태그의 종류4. MIN : 태그의 내부 최소값5. MAX : 태그의 내부 최대값6. RAWMIN : 태그의 현장 최소값7. RAWMAX : 태그의 현장 최대값8. ALARMHIHI : 경계값 경보의 HIHI 경계값9. ALARMHI : 경계값 경보의 HI 경계값10. ALARMLO : 경계값 경보의 LO 경계값11. ALARMLOLO : 경계값 경보의 LOLO 경계값

● 도움말에 모든 태그 변수의 종류를 아래와 같은 경로를 통해 검색할 수 있음

[목차] 혹은 [내용] 탭 > [연산식 및 명령식] > 태그 변수

124

CIMON SCADA HMI 정기교육 자료

Page 125: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

2. I/O 디바이스 통신 상태 체킹

125

CIMON SCADA HMI 정기교육 자료

Page 126: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #2-1 통신 상태 확인(HMI)

¨ 메뉴상에서 [보기] => [네트워크] 클릭

* 내용 – 청색이면 이상 없이 통신 하는 것이고 적색이면통신 이상이다.

* 확인 방법 – 실제 장비를 연결 한 후 장비와 PC 에 연결된 선을인위적으로 붙였다가 떼서 변화를 관찰한다

126

CIMON SCADA HMI 정기교육 자료

Page 127: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #2-2 통신 상태 확인(함수)

¨ Sub Main()

¨ While TRUE

¨ Sleep(3000)

¨ c = CommStatus(“A.A”)

¨ SetTagVal “COM”, c

¨ wEnd

¨ End Sub

* 내용 – CommStatus(“디바이스이름.스테이션이름”)

* 확인 방법 – 연결되어 있는 이더넷 선을 끊었다 붙였다 하면서“COM” 태그 값을 확인해 본다이 값이 0이면 정상이고 이 값이 1이면 비정상이라는 뜻이다주기적으로 호출함으로써 드라이버 상태 값을 항상 확인한다

127

CIMON SCADA HMI 정기교육 자료

Page 128: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

3. SCADA 네트워킹

128

CIMON SCADA HMI 정기교육 자료

Page 129: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

적용 가능한 네트워크 구성(1)

¨ FEP (Front End Processor)

¤ CIMON SCADA를 장비로 간주

¤ 어드레스는 태그 이름이 됨

¤ 여러 사이트에 흩어져 있는 SCADA 를 한 PC(SCADA) 에서 한꺼번에 감시하거나 제어하고자 할 때 사용

● FEP 방식은 Front End Processor의 약자

● 예를 들어 보일러실이 N 개 있고 각각에 Cimon-SCADA가 보일러를 감시 제어 하고있었는데 이를 사무실에 앉아서 전체 보일러N 에 대한

상태나 제어를 한 CIMON-SCADA를 통해 제어나 감시 하고자 할 때 사용한다. 이 때 통신 방식은 Cimon-SCADA N개 (각 보일러실)

와 하나의 Cimon-SCADA( 중앙감시 PC) 와의 1대 N 방식 통신을 하게 된다.

● 원래의 FEP는 특정 장비에서 발생하는 통신 상의 과부하를 경감시켜주기 위한 용도로사용됨. 즉, 통신 자체를 주 프로그램(혹은 장비)에서 수행하지 않고 FEP가 수행하도록 함으로써, 주 프로그램이 작업을 처리해야 하는 것에 집중할 수 있도록 해줌.

● CIMON SCADA에서 사용되는 FEP는 위의 용도로 사용되기 보다는, 외부 프로그램 혹은 다른 CIMON SCADA 시스템에서 자신의 데이터베이스 태그의 값들을 읽을 수 있도록인터페이스를 제공하는 것에 중점을 둔다.

● CimonX가 FEP 서버로 동작하게 되면, 외부의 프로그램 혹은 다른 CimonX가 해당FEP 서버로 동작하는 CimonX를 일종의 장비로 인식하고 접근 하게 된다.

129

CIMON SCADA HMI 정기교육 자료

Page 130: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

네트워크 예(1)

서로 다른Cimon Scada

프로젝트를 통합할 수 있음.

● 위의 네트워크를 보면, 각 PLC 장비를 제어하는 두 CIMON SCADA 시스템 A,B가 존재하고, 이 두 시스템을 통합하는 상위의 CIMON SCADA 시스템 S가 최 상단에 존재해야한다.

● 위의 네트워크 구성은, 하위의 두 A,B를 FEP 서버로 구성하고, S에서 각 A,B를 I/O 디바이스로 등록하면 쉽게 구현 할 수 있다.

130

CIMON SCADA HMI 정기교육 자료

Page 131: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

적용 가능한 네트워크 구성(2)

¨ 서버/클라이언트 (Server/Client)

¤ 서버의 프로젝트를 클라이언트에서 다운로드

● 일반적인 서버/클라이언트 방식다수의 프로그램 (혹은 장비)인 클라언트들이 유일한 프로그램( 혹은 장비)인 서버에게 특정 서비스를 요청하고, 서버는 이들 요청을 처리하고 클라이언트들에게 결과를 응답해주는 방식을 말함

● CIMON SCADA에서 사용하는 서버/클라이언트 방식도 위와 비슷한 방식으로 동작함

● FEP로 동작시키는 경우, 태그 데이터들만 I/O 어드레스 형태로 통신하지만, 서버/클라이언트로 동작시킬 경우, 파일 단위로 통신함. 즉, 클라이언트로 동작되는 CimonX는 다운 받을 목록을 설정하고, 초기 실행시 관련 모든 파일을 서버로 동작하는 CimonX로부터전송 받고 동기화한다.

● FEP 방식과는 달리, 실행 시 파일들을 서버측 데이터와 동기화 해야 하기 때문에, 약간의 오버헤드가 발생 할 수 있다.

131

CIMON SCADA HMI 정기교육 자료

Page 132: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

네트워크 예(2)

1층 5층

1층의 Cimon Scada를 현장으로 가지 않아도 볼 수 있음

● 위의 네트워크를 보면, 각 PLC 장비를 제어하는 CIMON SCADA 시스템 A가 존재하고, 이 시스템을 현장이 아닌 다른 곳에서 CIMON SCADA B를 구축하고 현장과 동일한 화면을 볼 수 있도록 구성되야 한다.

● 위의 네트워크 구성은, A를 서버로 ,B를 클라이언트로 구성하면 쉽게 구현 할 수 있다.

132

CIMON SCADA HMI 정기교육 자료

Page 133: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

적용 가능한 네트워크 구성(3)

¨ 서버 이중화 (Server Duplexing)

¤ Primary 서버와 Secondary 서버로 구성됨

¤ 양쪽의 서버에서 서로의 프로젝트를 동기화

¤ Secondary 서버는 동기화만 수행하고, 동작되지 않음

● 특정 시스템에서 동작하는 CIMON SCADA의 경우, 해당 시스템은 어떠한 장애가 발생해도 종료되지 않아야 하는 경우 사용됨.

● CimonD에서 [도구], [네트워크] 설정 시, 각각 Primary 서버와 Secondary 서버로 지정한다.

● Primary 서버이든 Secondary 서버이든, 먼저 실행되는 CimonX가 Active 상태가 되며, 나중에 실행되는 CimonX는 Standby 상태가 된다. Standby 상태가 되는 CimonX는Active 상태인 서버 측 파일을 기준으로 동기화를 된다. (Standby 상태인 CimonX는 실제동작되지 않고 데이터 동기화만 한다.)

● 만약, Active 상태인 서버에 문제가 생겨 더 이상 기능을 수행 할 수 없을 때, Standby 상태인 서버가 Active 상태로 전환되며, 기능을 대신한다. 추후, 문제가 생긴 서버가 복구되어 재 실행되면 이미 Active 상태인 서버가 존재하므로 Standby 상태로 전환된다.

133

CIMON SCADA HMI 정기교육 자료

Page 134: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(1)

¨ 교육 실 네트워크 구성

강사 노트북IP어드레스 : 100.100.100.10(Fep 서버로 동작)

교육 참석자 터치 PC들… (Fep 클라이언트로 동작)

● 실습실 네트워크 구성은 위의 그림과 같다. 강사 노트북에 할당된 어드레스는“100.100.100.10” 이며, 지금까지 실습한 프로젝트를 FEP 서버로 설정한다.

● 교육 참석자 터치 PC들은 FEP 서버로 설정된 강사의 CimonX를 I/O 디바이스로 등록하고, FEP 서버와의 통신을 실습한다.

134

CIMON SCADA HMI 정기교육 자료

Page 135: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(2)

¨ FEP 서버 설정 (강사 노트북)

체크

● FEP 서버 설정은 강사 노트북에서만 설정한다. 교육 참석자들의 터치 PC에서는 설정하지 않는다.

● CimonD에서 [도구] 메뉴의 [네트워크] 메뉴를 선택하고, 위의 그림에서처럼“FEP(CIMON-Net 서버)로 동작” 항목을 선택한다.

135

CIMON SCADA HMI 정기교육 자료

Page 136: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(3)

¨ FEP 서버 설정 (강사 노트북)(2)

선택

서버의 IP어드레스 입력

● “FEP 설정” 탭 항목으로 넘어가 위의 그림처럼 “ENET (TCP/IP)” 버튼을 선택하면, IP 입력 대화 상자가 나타난다. 이 곳에 FEP 서버로 동작할 PC의 IP를 입력한다.

● “포트”는 UDP 소켓 포트 1609를 기본 베이스로 가지는 오프셋을 지정한다. 만약, “포트”에 “10”을 입력하면 내부적으로 UDP 포트 “1619 “번을 사용한다는 것을 의미한다. 기본 값인 “0”을 그대로 사용한다.

136

CIMON SCADA HMI 정기교육 자료

Page 137: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(4)

¨ FEP 클라이언트에서의 I/O 디바이스 설정(1)

㈜케이디티시스템즈 CIMON Net (Ethernet) 선택

● 강사 노트북에서 FEP 서버 설정을 했으면, 그 다음 교육 참석자들의 터치 PC에 열려있는 프로젝트에 위의 그림과 같이 I/O 디바이스를 등록한다.1. “디바이스 이름”은 “강사서버”라고 입력함2. 통신 드라이버는 “㈜케이디티시스템즈 CIMON Net (Ethernet) “을 선택하고 “확인”

버튼을 누른다.

137

CIMON SCADA HMI 정기교육 자료

Page 138: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(5)

¨ FEP 클라이언트에서의 I/O 디바이스 설정(2)

클라이언트인해당 터치 PC의IP어드레스 입력

클릭

● 위의 그림과 같이 대화 상자가 나타나면, “기본 IP 어드레스” 항목에 터치 PC의 IP어드레스를 입력한다.

● 이전 PLC 통신 실습에서 ‘통신포트’항목을 설정하는 것과 동일 하다고 보면 됨.

● 오른쪽 하단의 “추가” 버튼을 누른다.

138

CIMON SCADA HMI 정기교육 자료

Page 139: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(6)

¨ FEP 클라이언트에서의 I/O 디바이스 설정(3)

강사 서버의IP어드레스 입력

● 위의 그림과 같이 대화 상자가 나타나면, “이름” 은 “강사서버”라고 입력한다.

● 이전 PLC 통신 실습에서 ‘스테이션’항목을 설정하는 것과 동일 한 개념임

● 하단 항목에 “포트”와 “기본 IP 어드레스” 의 값을 이전에 강사 노트북에서 설정한 IP어드레스(100.100.100.10)와 포트(0)로 입력한다.

● 오른쪽 하단의 “확인” 버튼을 누르고 I/O 디바이스 등록을 완료한다.

139

CIMON SCADA HMI 정기교육 자료

Page 140: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(7)

¨ FEP 클라이언트에서의 태그 생성(1)

Fep 서버로부터 읽을 태그들을“강사서버” 그룹 태그에 저장

● 위의 그림과 같이 “강사서버”라는 그룹 태그를 하나 만든다.

140

CIMON SCADA HMI 정기교육 자료

Page 141: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습3-1. FEP 통신 실습(8)

¨ FEP 클라이언트에서의 태그 생성(2)

강사 서버에 존재하는태그 이름 “디지털1” 을어드레스로 입력

● 위의 그림과 같이 방금 전에 등록한 디바이스(“강사서버.강사서버”)를 사용하는 실 태그를 생성한다.

● I/O 어드레스에 는 강사 서버에 존재하는 태그 이름을 입력한다. 예) 디지털1, 아날로그1, 아날로그2, M20, Y21 … 등

● 만약, 강사 서버에 있는 태그가 특정 그룹 태그 안에 포함되어 있으면 “그룹 태그.태그이름“과 같이 함께 입력한다.

예) 그룹1.디지털1, 그룹1.아날로그1 … 등

● CimonX를 실행하여 태그의 값이 제대로 표시 되는지 확인하고, 값도 바꾸어 본다.

● 값을 바꿨을 때, 강사 노트북에 실행 중인 CimonX의 태그 값이 변경되는지 확인한다.

141

CIMON SCADA HMI 정기교육 자료

Page 142: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

4. 기타 고급 기능 및 내부 함수

● Cimon SCADA 프로그램은 태그 기반으로 동작하며, 실행 시 서로 다른 여러 모듈(기능)들이 공통적인 태그 값을 매개로 하여 연계되는 프로그램임

● 이런 기능들을 사용하기 위해서는 [메뉴]를 통해 제공되는 각각의 모듈 설정 대화상자를 이용하면 되지만, 간혹 이런 설정만으로 는 현장 사용자가 원하는 화면 및 기능을 구현하지 못하는 경우가 생김

● 이를 위해, 각각의 기능들은 자신의 내부함수들을 제공하며, 스크립트에서 이 함수들을 이용하여 사용자가 원하는 특별한 프로젝트를 제작할 수 있도록 해준다.

● CimonD 프로그램의 [도움말]에서 각각의 기능들이 제공하는 함수들을 찾을 수 있으며, 경로는 아래와 같다

[목차] 혹은 [내용] 탭 > [내부함수] > “내부함수 – 종류별” 항목에서 각 기능 별제공되는 함수가 종류별로 정리되어 있다

142

CIMON SCADA HMI 정기교육 자료

Page 143: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

스크립트를 이용한 엑셀 파일 생성

¨ 공통 사항

¤양식 파일의 복사

¤파일 열기

¤시트, 셀에 데이터 값 쓰기

¤파일 닫기

● 기본 과정에서 학습한 보고서 기본 기능과 비슷한 기능인, 스크립트를 사용하여 엑셀파일을 출력해 본다.

● 사례

1. 사용자가 CimonX 화면을 이용하여 특정 디지털 태그를 동작 시킨다.2. 특정 디지털 태그가 On이 되면 아날로그 태그 값들을 읽어서 엑셀 파일로 생성한다. 3. 생성된 엑셀 파일에 설정된 주기 마다 아날로그 태그 값을 쓴다.4. 특정 디지털 태그의 값이 Off 되어 동작이 중지되면, 기록하고 있던 파일을 닫고 저장

한다.

v Microsoft Excel 정품이 설치되어야 스크립트에서 엑셀제어가 가능합니다(Excel Automation)

143

CIMON SCADA HMI 정기교육 자료

Page 144: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-1. 엑셀 파일 생성(1)

¨ 보고서를 출력하는 함수 생성

● 우선 보고서를 생성 및 출력하여 저장하는 함수를 아래와 같이 만든다.

Sub StatusSave()

End Sub

● 추 후, 이 함수 안에 필요한 명령문들이 입력될 것임

144

CIMON SCADA HMI 정기교육 자료

Page 145: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-1. 엑셀 파일 생성(2)

¨ 동작 디지털 태그의 생성

● 다음으로, On/Off 값을 가지는 디지털 태그를 생성한다.

1. 태그 이름은 “동작시그날”이라고 입력2. 태그 종류는 디지털 선택3. 일반설정 탭에서 “태그 동작을 지정함” 과 “태그값 변경시 태그 동작을 실행함” 체크4. 태그동작 탭에서 아래와 같이 입력

RunScript(“StatusSave”)

145

CIMON SCADA HMI 정기교육 자료

Page 146: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-1. 엑셀 파일 생성(3)

¨ 태그의 생성

● 다음으로, 사용할 태그들을 생성한다

1. 보고서에 출력 할 태그들로서, 아래와 같이 생성한다

• 태그 이름 (ANA1), 태그 종류 (아날로그), 초기값(1234)

• 태그 이름 (DIG1), 태그 종류 (디지털), 초기값(1)

• 태그 이름 (STR1), 태그 종류(문자열), 초기값(ABCD)

2. 엑셀에 데이터를 쓸 때, 마지막으로 쓴 셀 위치를 저장하는 태그로서, 아래와 같이 생성한다

• 태그 이름 (CELL_NO), 태그 종류 (아날로그), 초기값(0), “종료 시 최종 상태저장” 체크

3. 엑셀에 데이터를 쓸 때, 얼마만큼의 주기대로 저장할 지 그 기준 값을 나타내는 태그로서, 아래와 같이 생성한다

• 태그 이름 (시간간격), 태그 종류 (아날로그), 초기값(1)

146

CIMON SCADA HMI 정기교육 자료

Page 147: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-1. 엑셀 파일 생성(4)

¨ 엑셀 양식 파일 만들기

● 다음으로, 원본 양식으로 사용할 양식 파일을 만든다

1. 파일 이름은 “Ex.xls” 로 저장한다.

● 이전에 생성한 “StatusSave” 에 아래의 내용을 입력한다. (다음 장에 기술됨)

147

CIMON SCADA HMI 정기교육 자료

Page 148: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

Sub StatusSave()

Set ExcelApp = CreateObject("Excel.Application")

' 양식파일 경로 및 이름fFormName$ = “D:\EXCEL\Ex.xls“

' 새파일 경로 및 이름fTodayName$ = “D:\EXCEL\Ex\"+TimeStr(12)+".xls"

' 파일을 Open 한다.If (FileExists(fTodayName$) = True) Then

Set DayRpt = ExcelApp.Workbooks.Open(fTodayName$)Else

'파일이 없으면 양식으로 부터 복사하여 새로운 파일을 생성FileCopy fFormName$ , fTodayName$Set DayRpt = ExcelApp.Workbooks.Open(fTodayName$)

'Cell 위치 초기화SetTagVal "CELL_NO“, 2

End If

Set Sheet1 = DayRpt.Worksheets(1)i = GetTagVal("CELL_NO")

'동작시그날이 1 인 동안While (GetTagVal("동작시그날"))

Set Cell = Sheet1.Range("A"+CSTR(i))Cell.Value = TimeStr(44)Set Cell = Sheet1.Range("B"+CSTR(i))Cell.Value = GetTagVal("ANA1")Set Cell = Sheet1.Range("C"+CSTR(i))Cell.Value = GetTagVal("DIG1")Set Cell = Sheet1.Range("D"+CSTR(i))Cell.Value = GetTagVal("STR1")i = i+1Interval = GetTagVal("시간간격")Sleep(Interval * 1000)

Wend

SetTagVal "CELL_NO", iSheet1.CalculateDayRpt.SaveExcelApp.QuitSet ExcelApp = Empty

End Sub

148

CIMON SCADA HMI 정기교육 자료

Page 149: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

데이터 수집 관련 함수

¨ DLogVal(“태그이름”, “시간값”)

¤ *.cld 파일 확장자로 저장

¤순간 값만을 저장

¨ LogFileDialog()

¨ LogFileConvert(“cld 파일이름”, “저장할 파일이름”)

● 데이터수집은 사용자가 수집하고자 하는 태그의 값을 파일의 형태로 저장해 주는 기능 임.

● 수집할 수 있는 태그는 아날로그와 디지털태그이며, 데이터베이스에서 태그 등록 시부가기능으로 데이터수집을 선택한 태그에 한해 수집이 가능함.

● 이 태그들의 값을 수집하기 위해서는 프로젝트에 데이터수집모델을 설정하여 등록해야 하며, 설정된 모델에 의해 해당 태그의 데이터를 수집하여 파일의 형태로 저장함.

● 수집된 태그 데이터는 주로 경향감시(트렌드) 자료로 사용되거나, 보고서를 출력할 때TLogVal 대신 사용된다.

149

CIMON SCADA HMI 정기교육 자료

Page 150: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-2. 데이터 수집 관련(1)

¨ 데이터 수집 함수 DLogVal을 이용한 엑셀 출력

● 사례

1. 사용자가 특정 디지털 태그의 값을 On 시켜, 그 시간 이후부터 특정 아날로그 데이터들을 엑셀 파일에 쓰려고 함

150

CIMON SCADA HMI 정기교육 자료

Page 151: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-2. 데이터 수집 관련(2)

● [도구] > [데이터 수집] 메뉴 선택 후 모델을 아래와 같이 추가 한다. 추가 한 후의 화면은 위의 화면과 같다

• 수집모델이름 수집• 수집방법 정주기로 수집• 수집주기 1초• 파일생성방법 1개월 간격• 저장방법 겹쳐쓰기

151

CIMON SCADA HMI 정기교육 자료

Page 152: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-2. 데이터 수집 관련(3)

¨ 태그 생성 1.

2.

1. [도구] > [데이터베이스] 메뉴 선택 후, 데이터를 저장하는 두 개의 아날로그 태그를생성한다.

• 태그이름 ANA1• 태그종류 아날로그• 데이터형태 UINT16• 초기값 46000• 데이터수집 수집

• 태그이름 ANA2• 태그종류 아날로그• 데이터형태 UINT16• 초기값 51000• 데이터수집 수집

2. 그리고 각각의 태그의 [고급설정] 탭에서 방금 전에 생성한 모델을 선택한다.

152

CIMON SCADA HMI 정기교육 자료

Page 153: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-2. 데이터 수집 관련(4)

¨ 스크립트 함수 추가

● [도구] > [스크립트] 메뉴 선택 후, 아래와 같은 스크립트 함수를 추가한다. 추 후, 이함수는 데이터 수집 파일로부터 데이터를 읽어와서 파일로 출력하는 기능을 수행한다.

Sub OutputFile()

End Sub

153

CIMON SCADA HMI 정기교육 자료

Page 154: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-2. 데이터 수집 관련(5)

¨ 스크립트에 사용되는 가상 태그들을 생성

● 스크립트 안의 내용을 구현하기 위해, 아래와 같이 사용할 태그들을 생성한다.

태그이름 SAVE_START태그종류 디지털초기값 0태그속성 “태그 동작을 지정함”, “태그 값 변경시 태그 동작 실행함” 체

크태그동작 RunScript(“OutputFile”)

태그이름 START_TIME태그종류 문자열

태그이름 INTERVAL태그종류 문자열

154

CIMON SCADA HMI 정기교육 자료

Page 155: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

Sub OutputFile ()

flagD = getTagval("save_start")

if flagD = 1 then '시작 시간 저장

start_time$ = now()settagval "start_time", start_time$

elsestart_time$ = gettagval("start_time")end_time$ = now()

'시작 시간에서 몇 초가 경과 되었는지 계산intval = DateDiff("s", start_time$, end_time$)settagval "interval", cstr(intval)

'엑셀파일 경로FileName$ = "D:\" & TimeStr(44) & ".xls" '생성될 파일FileOld$ = "D:\EXCEL\Ex.xls " '양식 파일

If FileExists(FileName$) Then Else

'양식 파일에서 복사해 새로운 파일을 만든다.FileCopy FileOld$, FileName$

End If

Set XelApp = CreateObject("Excel.Application") Set XelFile = XelApp.Workbooks.Open(FileName$) Set ws=XelFile.sheets.item("sheet1")

Cell_Cnt = 1

ws.Cells(Cell_Cnt,1) = "시간“ '첫 행ws.Cells(Cell_Cnt,2) = "ANA1"ws.Cells(Cell_Cnt,3) = "ANA2"

for i = 1 to intval

setDate$ = DateAdd("s", i, start_time$)

yy$ = year(setDate$)montha$ = month(setDate$)dd$ = day(setDate$)

hh$ = hour(setDate$)mm$ = minute(setDate$)ss$ = second(setDate$)

nowT$ = yy$ & “년" & montha$ & “월" & dd$ & “일“ & _hh$ & "시" & mm$ & "분" & ss$ & "초"

'행,열ws.Cells(Cell_Cnt+i,1) = nowT$ws.Cells(Cell_Cnt+i,2) = DlogVal("ANA1", nowT$)ws.Cells(Cell_Cnt+i,3) = DlogVal("ANA2", nowT$)

next i

ws.CalculateXelFile.SaveXelApp.QuitSet XelApp = Empty

end if

End Sub

155

CIMON SCADA HMI 정기교육 자료

Page 156: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

트렌드(경향 감시 그래프)

¨ 실 시간 트렌드

¤현재 수집되는 데이터를 표시

¨ 히스토리컬 트렌드

¤데이터 수집 기능을 바탕으로 동작

¤과거 수집된 데이터를 표시

● 트렌드 특징

● 트렌드 화면의 배경이 될 수 있는 스크린, 펜 데이터를 관리하는 펜 및 시간 축 데이터를 관리하는 X축 설정기를 각각 작성할 수 있으므로 다양한 형태의 트렌드를 설정할 수있음.

● 최대 16개의 펜 등록 가능.

● 확대/축소하여 데이터 추이분석 가능.

● YT트렌드, Multiple 트렌드, XY 트렌드, STEP Multi-트렌드 등 다양한 트렌드 종류를 제공하여 사용자가 원하는 형태의 트렌드로 데이터를 감시 할 수 있음.

● 트렌드 또한 내부함수들을 제공하며, 내부함수들을 이용하여 사용자 요구에 맞는 기능을 구현 할 수 있음.

● 내부 함수를 사용하는 방법은 CimonD의 [도움말]에서 검색할 수 있으며, 그 경로는아래와 같음

[도움말] > [목차] 혹은 [내용] 탭 > [내부함수] > “내부함수 - 종류별” > “트렌드관련 함수” 참고

156

CIMON SCADA HMI 정기교육 자료

Page 157: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

기본 트렌드

¨ YT 트렌드

● 가장 기본적인 형태의 트렌드로 시간대별 태그 값을 감시할 수 있음.

● Y 축은 펜으로 설정된 데이터의 값, X 축은 시간 축으로 표현됨

● 사용하는 방법은 CimonD의 [도움말]에서 검색할 수 있으며, 그 경로는 아래와 같음

[도움말] > [목차] 혹은 [내용] 탭 > [트렌드] > “YT 트렌드”

157

CIMON SCADA HMI 정기교육 자료

Page 158: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

특수 트렌드

¨ Multi 트렌드

● 동일한 시간 축(X축)을 사용하고 태그값 축(Y축)은 독립적으로 표시하여, 각 태그들의구별이 쉽게 되어 사용자가 편리하게 감시할 수 있음.

● 일반적으로 Multiple 트렌드는 디지털 태그의 감시를 위해 주로 사용됨.

● 사용하는 방법은 CimonD의 [도움말]에서 검색할 수 있으며, 그 경로는 아래와 같음

[도움말] > [목차] 혹은 [내용] 탭 > [트렌드] > “Multi 트렌드”

158

CIMON SCADA HMI 정기교육 자료

Page 159: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

특수 트렌드

¨ XY 트렌드

● XY 트렌드는 X축과 Y축 모두 태그 값으로 지정됨

● 서로 다른 데이터들 사이의 상관관계를 조사하는 용도로 사용됨.

● 사용하는 방법은 CimonD의 [도움말]에서 검색할 수 있으며, 그 경로는 아래와 같음

[도움말] > [목차] 혹은 [내용] 탭 > [트렌드] > “XY 트렌드”

159

CIMON SCADA HMI 정기교육 자료

Page 160: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

특수 트렌드

¨ ST 트렌드

● 분할 수집 트렌드 (STEP Multi-Trend)는 트렌드의 데이터를 사용자가 지정한 단계 별로 표시할 수 있음.

● 예를 들어, 위의 그림처럼 패턴을 나타내는 검은 색 펜을 패턴 형태로 미리 설정 하고장비로부터 들어오는 실제 계측 값(굵은 빨간색 선)을 트렌드에 표현하여 모니터링 하는경우에 사용될 수 있음

● 사용하는 방법은 CimonD의 [도움말]에서 검색할 수 있으며, 그 경로는 아래와 같음

[목차] 혹은 [내용] 탭 > [트렌드] > “분할 수집 트렌드 (Step Multi-Trend)”

160

CIMON SCADA HMI 정기교육 자료

Page 161: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(1)

¨ 도구 모음 버튼 스크립트로 구현하기

● 트렌드의 도구 모음 버튼을 구현

● 구현하고자 하는 버튼

1. 트렌드 모드의 변환 (히스토리컬과 실시간 트렌드로의 전환)2. 시작 시간의 이동3. 최소/ 최대 설정

161

CIMON SCADA HMI 정기교육 자료

Page 162: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(2)

¨ 펜으로 등록할 아날로그 태그 생성

● 아날로그 태그를 하나 생성하고, 아래와 같이 입력한다. 데이터수집은 기존 실습한“수집” 모델을 이용한다.

• 태그이름 아날로그1• 태그종류 아날로그• 데이터형태 UINT16• 데이터수집 수집

162

CIMON SCADA HMI 정기교육 자료

Page 163: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(3)

¨ 페이지에 트렌드를 배치

● 페이지를 새로 만들고, 위의 그림과 같이 트렌드 오브젝트를 페이지 위에 배치한다. 트렌드의 이름은 “트렌드1”으로 입력하고, 방금 만든 “아날로그1” 태그를 트렌드의 펜으로 등록한다.

163

CIMON SCADA HMI 정기교육 자료

Page 164: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(4)

¨ 트렌드 모드 변경 함수 구현

1. 2.

● [도구] > [스크립트] 메뉴를 선택하고, “트렌드모드변경”이라는 스크립트 함수를 아래와 같이 새로 만든다

Sub 트렌드모드변경()

If GetTrendMode(“트렌드1”) = 1 ThenSetTrendMode “트렌드1”, 0

ElseSetTrendMode “트렌드1”, 1

End If

End Sub

● 페이지에 위의 그림과 같이 사각형 오브젝트를 그린 후, [터치] 명령식에 아래와 같이입력한다.

RunScript(“트렌드모드변경”)

164

CIMON SCADA HMI 정기교육 자료

Page 165: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(5)

¨ 시작 시간 설정 창 띄우기

1. 2.

● [도구] > [스크립트] 메뉴를 선택하고, “시작시간변경”이라는 스크립트 함수를 아래와같이 새로 만든다

Sub 시작시간변경()

If GetTrendMode(“트렌드1”) = 0 ThenMsgbox “트렌드 모드를 히스토리컬 모드로 자동 전환합니

다”SetTrendMode “트렌드1”, 1

End If

TrendSetTime "트렌드1", 0, ""

End Sub

● 페이지에 위의 그림과 같이 두 번째 사각형 오브젝트를 그린 후, [터치] 명령식에 아래와 같이 입력한다.

RunScript(“시작시간변경”)

165

CIMON SCADA HMI 정기교육 자료

Page 166: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(6)

¨ 최소/ 최대 값 설정 구현(1)

● [도구] > [데이터베이스] 메뉴를 선택하여, 두 개의 태그를 아래와 같이 생성한다

• 태그이름 최소값• 태그종류 아날로그• 데이터형태 UINT16

• 태그이름 최대값• 태그종류 아날로그• 데이터형태 UINT16

166

CIMON SCADA HMI 정기교육 자료

Page 167: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #4-3. 트렌드 관련(7)

¨ 최소/ 최대 값 설정 구현(2)

● [도구] > [스크립트] 메뉴를 선택하고, “최소최대설정”이라는 스크립트 함수를 아래와같이 새로 만든다

Sub 최소최대값설정()

최소값변수 = GetTagVal(“최소값”)최대값변수 = GetTagVal(“최대값”)

If 최소값변수 >= 최대값변수 ThenMsgbox “최소값 최대값이 잘못 입력되었습니다”

ElseTrendSetPenVal “트렌드1”, 0, 2, 최소값변수TrendSetPenVal “트렌드1”, 0, 3, 최대값변수

End If

End Sub

● 페이지에 위의 그림과 같이 사각형 오브젝트를 그린 후, [터치] 명령식에 아래와 같이입력한다.

RunScript(“최소최대값설정”)

167

CIMON SCADA HMI 정기교육 자료

Page 168: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

5. ODBC

● ODBC (Open Database Connectivity)

1. 용어• 어떤 응용프로그램을 사용하는지에 관계없이, 데이터베이스를 자유롭게 사용

하기 위하여 만든 응용프로그램의 표준방법을 말한다.• 여기서 어떤 응용프로그램이라 함은 Cimon Scada 시스템을 말함

2. Cimon Scada에서 말하는 ODBC란, Access, Oracle 등과 같은 범용 데이터베이스 시스템과 연계될 수 있도록 제공 되는 기능.

3. 즉, CIMON-SCADA의 각종 데이터를 범용 데이터베이스 시스템에 등록하거나, 취득할수 있음. 데이터베이스의 자료를 갱신, 등록, 삭제, 열람하기 위하여 표준 SQL을 사용하며, 트랜젝션은 ODBC 메카니즘을 통하여 이루어진다.

4. SQL 질의 구문은 ‘SELECT문’과 ‘기타 구문’으로 구별하여 설정한다. SELECT문은 결과로 얻어지는 레코드들의 열람이 가능하도록 처리가 되며, 기타 구문은 레코드의 등록, 삭제 등의 일회성 트랜젝션 처리에 사용됨.

5. ODBC 기능을 사용하는 법은 CimonD의 [도움말]에서 검색할 수 있으며, 그 경로는 아래와 같음

[도움말] > [목차] 혹은 [내용] 탭 > [ODBC] > “Microsoft사의 Access 사용 예”

168

CIMON SCADA HMI 정기교육 자료

Page 169: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

ODBC

Cimon SCADA에서의 ODBC

MS SQL

Oracle

My SQL

CimonSCADA

ODBC모듈

DBMS

● Cimon SCADA, ODBC, 데이터베이스간의 관계를 정리하면 위의 화면과 같음

1. Cimon SCADA에서는 윈도우에서 제공하는 ODBC 표준 인터페이스를 사용하므로, 상용 데이터베이스 프로그램이 어떤 것을 사용하는지 고려할 필요가 없음.

169

CIMON SCADA HMI 정기교육 자료

Page 170: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

데이터베이스 란?

¨ Database Management System

¨ 테이블 (Table)

¨ 레코드 (Record)

¤ 하나의 정보를 이루는 단위

¨ 컬럼 (Column) 혹은 필드(Field)

¤ 각각의 데이터 속성

학번 이름 학과

200011 홍길동 컴공

200012 이순신 화공

200021 홍길동 디자인

200031 김철수 미술

레코드

필드

● 데이터베이스

1. 용어• 어느 한 조직의 여러 응용 시스템들이 데이터를 공유 할 수 있도록, 최소의 중

복으로 통합하여 컴퓨터에 저장한 운영 데이터의 집합

● 특징

1. 중복 최소화2. 최신 데이터 유지3. 실시간 처리 응답4. 동시 공유5. 데이터의 내용에 따른 참조

● 종류

1. MS SQL2. My SQL3. Oracle4. Access 및 SQLite

170

CIMON SCADA HMI 정기교육 자료

Page 171: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

데이터 베이스와 SQL

DBMS

학번 이름 학과

200011 홍길동 컴공

200012 이순신 화공

200021 홍길동 디자인

200031 김철수 미술

학번 이름 학과

200011 홍길동 컴공

200021 홍길동 디자인

학번 이름 학과

200011 홍길동 컴공

200012 이순신 화공

200021 홍길동 디자인

200031 김철수 미술

필요한데이터만

추출

Select * from 학적 Where 이름=‘홍길동’

가상 테이블(레코드들의 집합) 전달

SQL 명령

● 예를 들어 사용자가 DBMS에게 필요 데이터를 검색 요청하는 경우, DBMS에서 사용하는 Select SQL 문장을 입력한다.

● DBMS는 요청 받은 Select SQL 문장을 분석하여, 찾고자 하는 테이블에서 맞는 조건에 해당되는 레코드를 찾아낸다

● 찾아낸 레코드들을 조합하여 새로운 가상테이블로 만든다.

● 만든 가상의 테이블을 요청한 사용자에게 전달한다.

171

CIMON SCADA HMI 정기교육 자료

Page 172: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

질의 문법(SQL)

¨ 검색

¤ Select [필드] From [테이블] Where [조건]

¨ 내림/오름차순 정렬nOrder By DESC[ASC] 학번 이름 학과

200011 홍길동 컴공

200012 이순신 화공

200021 홍길동 디자인

200031 김철수 미술

테이블 명 : 학적

Select * From 학적 Order By 학번 DESC

Select 이름, 학과 From 학적 Where 학번=‘200021’

● SQL (Structured Query Language)

1. 용어• 데이터베이스를 사용할 때, 데이터베이스에 접근할 수 있는 데이터베이스 하부

언어를 말한다.

● 데이터베이스의 특정 테이블에 접근하여 특정 레코드를 검색, 얻어오기 위해서는Select 구문을 사용한다

● Select 예

• Select * From 학적 Order By 학번 DESC• Select 이름, 학과 From 학적 Where 학번=‘200021’

172

CIMON SCADA HMI 정기교육 자료

Page 173: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

질의 문법(SQL)

¨ 추가

¤ Insert Into [테이블] Values [입력 값]

학번 이름 학과

200011 홍길동 컴공

200012 이순신 화공

200021 홍길동 디자인

200031 김철수 미술

테이블 명 : 학적

학번 :200022이름 :김갑수학과 :경영

Insert Into 학적(학번, 이름, 학과) Values(‘200022’, ‘김갑수’, ‘경영’)

● 특정 레코드를 생성하여, 데이터베이스의 특정 테이블에 삽입하기 위해서는 Insert구문을 사용한다

● Insert 예

• Insert Into 학적(학번,이름,학과) Values (‘200022’, ‘김갑수’, ‘경영’)

173

CIMON SCADA HMI 정기교육 자료

Page 174: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

질의 문법(SQL)

¨ 변경

¤Update [테이블] Set [필드=입력 값] Where [조건]

학번 이름 학과

200011 홍길동 컴공

200012 이미자 건축

200021 홍길동 디자인

200031 김철수 미술

200022 김갑수 경영

변경

Update 학적 Set 이름=‘이미자’, 학과=‘건축’ Where 학번=‘200012’

● 데이터베이스의 특정 테이블에 접근하여 특정 레코드의 정보를 변경하기 위해서는Update 구문을 사용한다

● Update 예

• Update 학적 Set 이름=‘이미자’, 학과=‘건축’ Where 학번=‘200012’

174

CIMON SCADA HMI 정기교육 자료

Page 175: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

질의 문법(SQL)

¨ 삭제

¤Delete From [테이블] Where [조건]

학번 이름 학과

200011 홍길동 컴공

200012 이미자 건축

200021 홍길동 디자인

200031 김철수 미술

200022 김갑수 경영

…삭제

Delete From 학적 Where 학번=‘200031’

● 데이터베이스의 특정 테이블에 접근하여 특정 레코드를 삭제하기 위해서는 Delete 구문을 사용한다

● Update 예

• Delete From 학적 Where 학번=‘200031’

175

CIMON SCADA HMI 정기교육 자료

Page 176: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-1

¨ Access를 이용한 구현

¤검색, 삽입, 갱신, 삭제 기능 구현

● 간단한 실습을 하기 위해 MS에서 배포하는 Access 프로그램으로 테스트를 진행한다.

● 위의 화면과 같이 [시작] > [Microsoft Office] > “Microsoft Office Access “를 실행한다

176

CIMON SCADA HMI 정기교육 자료

Page 177: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-2

¨ DB 생성

● Access 화면 상에서 “새 데이터베이스”를 선택하여 실습을 위한 “.mdb” 파일을 원하는 경로에 저장한다. 파일 이름 및 형식은 아래와 같다

파일 이름 myDB.mdb파일 형식 Microsoft Office Access 데이터베이스(2000 형식)(*.mdb)

177

CIMON SCADA HMI 정기교육 자료

Page 178: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-3

¨ 테이블 명 변경

1.

● Access에서 새로운 데이터베이스를 생성하고 나면, 위의 화면과 같이 테이블이 하나자동으로 생성됨

● 테이블을 선택하고, 마우스 오른쪽 버튼을 눌러 “디자인 보기” 메뉴를 선택하여 테이블 정보를 변경한다

테이블 이름 myTable

178

CIMON SCADA HMI 정기교육 자료

Page 179: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-4

¨ 디자인 보기

속성

● “디자인 보기” 메뉴를 선택하면 위와 같은 화면이 나타나며, 필드 이름과 데이터 형식은 아래와 같이 입력한다

필드 이름 학번데이터 형식 텍스트속성-필수 예속성-빈 문자열 허용 아니요기본키 지정(마우스 오른쪽 버튼)

필드 이름 이름데이터 형식 텍스트

필드 이름 학과데이터 형식 텍스트

179

CIMON SCADA HMI 정기교육 자료

Page 180: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-5

¨ 레코드 삽입하기

더블클릭

● 디자인 보기를 저장하고 종료한 다음, 테이블(myTable)을 더블클릭하면 위의 화면과같이 레코드를 입력할 수 있는 화면으로 전환된다.

● 아래와 같이 레코드들을 삽입하여 본다. 입력했으면, Access 프로그램을 저장하고 종료한다.

학번 200011이름 홍길동학과 컴공

학번 200012이름 이순신학과 화공

학번 200021이름 홍길동학과 디자인

학번 200031이름 김철수학과 미술

180

CIMON SCADA HMI 정기교육 자료

Page 181: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-6

¨ ODBC 설정

1.

2.

● 데이터베이스를 생성하였으므로, 이제 윈도우의 ODBC 설정을 해본다.

● 윈도우 [시작] > [제어판] > [관리도구] 항목을 실행하고, “데이터 원본 (ODBC)” 을 선택한다

● 위와 같이 “ODBC 데이터 원본 관리자” 대화상자가 화면에 나타난다. 여기서 [사용자DSN] > [추가] 버튼을 클릭하여 방금 전에 생성한 데이터베이스를 등록시켜준다

181

CIMON SCADA HMI 정기교육 자료

Page 182: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-7

¨ ODBC 설정

1.

2.

● [추가] 버튼을 누르면, 위와 같은 화면이 나타난다. 데이터베이스를 Access 로 생성하였으므로, “Microsoft Access Driver(*.mdb)” 항목을 선택하고, [마침] 버튼을 클릭한다.

● 이곳에서, 사용할 데이터베이스 종류에 따라 맞는 항목을 선택하면 된다.

182

CIMON SCADA HMI 정기교육 자료

Page 183: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-8

¨ ODBC 설정

1.

2.

3.

1. 다음으로, 이전에 생성한 데이터베이스 파일을 선택하는 대화상자가 위의 화면과 같이 표시된다. 선택 버튼을 누른다

2. “myDB.mdb” 파일을 저장했던 경로를 찾아 확인하여 등록한다.

3. 데이터 원본 이름은 “myDB” 로 입력한다. 추후, Cimon SCADA에서 이 이름을 가지고접근한다. 확인 버튼을 누르면 ODBC 설정이 완료된 것임.

183

CIMON SCADA HMI 정기교육 자료

Page 184: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-9

¨ CimonD에서의 태그 생성

● 그 다음, 관련 태그들을 아래와 같이 입력하고 생성한다. CimonD에서 [도구] > [데이터베이스] 메뉴를 선택한다.

태그이름 학번태그종류 문자열

태그이름 검색학번태그종류 문자열

태그이름 이름태그종류 문자열

태그이름 학과태그종류 문자열

● “검색학번”이라는 태그는 추후, 레코드를 검색하기 위한 조건태그로 사용된다

184

CIMON SCADA HMI 정기교육 자료

Page 185: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-10

¨ CimonD에서의 ODBC 설정

1.

2.

● 그 다음, Cimon SCADA에서의 ODBC 설정을 한다. CimonD에서 [도구] > [ODBC] 메뉴를 선택한다.

1. 위의 그림에서 “새 DBMS 등록” 버튼을 누르면 DB이름을 입력할 수 있는 대화 창이위와 같이 표시된다.

2. 이곳의 DB 이름을 방금전 ODBC 설정할 때 사용자 DSN에 등록했던 데이터 원본 이름(myDB)로 입력한다.

3. 확인 버튼을 누르고 저장한다.

185

CIMON SCADA HMI 정기교육 자료

Page 186: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-11

¨ Select 질의 생성

새 질의1.

2.

● 새 DBMS가 등록되면, 위의 ODBC 설정 창에서 두 번째 버튼인 “새 질의” 버튼이 활성화 된다.

1. 해당 버튼을 누르고, 나타나는 질의 정의 창에서 아래와 같이 설정한다.

질의 이름 SelectQ질의 종류 SELECT 구문질의 동작 방법 비지정

2. 입력한 후, [SQL 작성] 버튼을 클릭하여 질의를 작성한다

186

CIMON SCADA HMI 정기교육 자료

Page 187: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-12

¨ Select 질의 생성

¤ ‘[‘, ’]’ 의 의미

n태그의 이름을 지정 1.

2. 3.

태그의 이름

● 해당 버튼을 누르면, 위와 같이 질의를 입력할 수 있는 대화 상자 창이 화면에 나타난다.

1. 오른쪽의 [새필드] 버튼을 누르고 아래와 같이 3개의 필드를 입력한다.

필드 이름 학번태그 이름 학번데이터 종류 VARCHAR

필드 이름 이름태그 이름 이름데이터 종류 VARCHAR

필드 이름 학과태그 이름 학과데이터 종류 VARCHAR

2. 필드를 등록한 후, 왼쪽 아래에 FROM 입력란에 아래와 같이 입력한다

myTable

3. Where 입력란에는 아래와 같이 입력한다

학번=‘[검색학번]’

4. [확인] 버튼을 누르고 SELECT 질의 등록을 종료한다.

187

CIMON SCADA HMI 정기교육 자료

Page 188: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-13

¨ Insert 질의 생성

● “새 질의” 버튼을 누르고, 나타나는 질의 정의 창에서 아래와 같이 설정한다.

질의 이름 InsertQ질의 종류 기타 구문질의 동작 방법 비지정

● 입력한 후, [SQL 작성] 버튼을 클릭하여 질의를 작성한다

188

CIMON SCADA HMI 정기교육 자료

Page 189: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-14

¨ Insert 질의 생성

1.

2.

‘[’, ‘]’의 의미 : 바인딩 번호를 의미

● 해당 버튼을 누르면, 위와 같이 질의를 입력할 수 있는 대화 상자 창이 화면에 나타난다.

1. 오른쪽의 [새태그] 버튼을 누르고 아래와 같이 3개의 태그를 입력한다.

태그 이름 학번데이터 종류 VARCHAR

태그 이름 이름데이터 종류 VARCHAR

태그 이름 학과데이터 종류 VARCHAR

2. 필드를 등록한 후, 아래에 SQL 입력란에 아래와 같이 입력한다

Insert Into myTable (학번, 이름, 학과) Values(‘[1]’, ‘[2]’, ‘[3]’)

3. [확인] 버튼을 누르고 Insert 질의 등록을 종료한다.

189

CIMON SCADA HMI 정기교육 자료

Page 190: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-15

¨ Update 질의 생성

● “새 질의” 버튼을 누르고, 나타나는 질의 정의 창에서 아래와 같이 설정한다.

질의 이름 UpdateQ질의 종류 기타 구문질의 동작 방법 비지정

● 입력한 후, [SQL 작성] 버튼을 클릭하여 질의를 작성한다

190

CIMON SCADA HMI 정기교육 자료

Page 191: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-16

¨ Update 질의 생성

1.

2.

● 해당 버튼을 누르면, 위와 같이 질의를 입력할 수 있는 대화 상자 창이 화면에 나타난다.

1. 오른쪽의 [새태그] 버튼을 누르고 아래와 같이 3개의 태그를 입력한다.

태그 이름 학번데이터 종류 VARCHAR

태그 이름 이름데이터 종류 VARCHAR

태그 이름 학과데이터 종류 VARCHAR

2. 필드를 등록한 후, 아래에 SQL 입력란에 아래와 같이 입력한다

Update myTable Set 이름=‘[2]’, 학과=‘[3]’ Where 학번=‘[1]’

3. [확인] 버튼을 누르고 Update 질의 등록을 종료한다.

191

CIMON SCADA HMI 정기교육 자료

Page 192: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-17

¨ Delete 질의 생성

● “새 질의” 버튼을 누르고, 나타나는 질의 정의 창에서 아래와 같이 설정한다.

질의 이름 DeleteQ질의 종류 기타 구문질의 동작 방법 비지정

● 입력한 후, [SQL 작성] 버튼을 클릭하여 질의를 작성한다

192

CIMON SCADA HMI 정기교육 자료

Page 193: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-18

¨ Delete 질의 생성

1.

2.

● 해당 버튼을 누르면, 위와 같이 질의를 입력할 수 있는 대화 상자 창이 화면에 나타난다.

1. 오른쪽의 [새태그] 버튼을 누르고 아래와 같이 1개의 태그를 입력한다.

태그 이름 학번데이터 종류 VARCHAR

2. 필드를 등록한 후, 아래에 SQL 입력란에 아래와 같이 입력한다

Delete From myTable Where 학번=‘[1]’

3. [확인] 버튼을 누르고 Delete 질의 등록을 종료한다.

193

CIMON SCADA HMI 정기교육 자료

Page 194: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

● 이제, 각각의 질의를 실행하는 스크립트 함수를 만든다

● CimonD의 [도구] > [스크립트] 메뉴를 선택하여 스크립트 창을 연다.

● 아래와 같은 4개의 스크립트 함수를 “스크립트 함수 추가” 버튼을 클릭하여 각각 만든다

1. 검색 함수 만들기

Sub 검색()

CSqlOpen("SelectQ")CSqlClose("SelectQ")

End Sub

2. 삽입 함수 만들기

Sub 삽입()

CSqlRun "InsertQ“

End Sub

3. 갱신 함수 만들기

Sub 갱신()

CSqlRun "UpdateQ“

End Sub

4. 삭제 함수 만들기

Sub 삭제()

CSqlRun "DeleteQ“

End Sub

194

CIMON SCADA HMI 정기교육 자료

Page 195: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #5-20

¨ 페이지 화면 구성1.

2.

1. 실습을 위한 페이지를 위의 화면과 같이 구성한다. 위의 화면의 왼쪽 빨간색 테두리에있는 3개의 태그 값 오브젝트는 아래와 같이 설정한다.

매칭되는 태그 이름 학번문자열형태의 데이터 입력 학번

매칭되는 태그 이름 이름문자열형태의 데이터 입력 이름

매칭되는 태그 이름 학과문자열형태의 데이터 입력 학과

2. 위의 화면의 오른쪽 빨간색 테두리에 있는 1개의 태그 값 오브젝트

매칭되는 태그 이름 검색학번문자열형태의 데이터 입력 검색학번

3. 4개의 사각형 오브젝트와 문자열 오브젝트를 이용하여 위의 화면과 같이 추가 하고, 각각의 오브젝트에 터치의 명령식 제어를 아래와 같이 설정한다.

• 검색 버튼의 터치 명령식 RunScript(“검색”)• 삽입 버튼의 터치 명령식 RunScript(“삽입”)• 갱신 버튼의 터치 명령식 RunScript(“갱신”)• 삭제 버튼의 터치 명령식 RunScript(“삭제”)

195

CIMON SCADA HMI 정기교육 자료

Page 196: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

6. DB 테이블 그리드에 출력하기

● SQL문으로 읽어온 Data들을 입출력 Table에 출력하기

1. DB Table에 작성된 모든 레코드들을 입출력 Table에 표시를 하는 방법을 알아 보자

2. DB Table의 레코드를 가져오기 위해 Cimon에서 SQL 질의 구문인 ‘Select문’을 작성하여야 한다.

3. Select문에서 얻어온 레코드들은 그에 매칭된 Tag에 연동되서 Data를 가져온다. 이때하나의 레코드만 Tag에 기록 할 수 있다.

4. DB Table의 있는 모든 레코드들을 가져오기 위해 스크립트를 이용하고, 이때 얻어온레코드들은 입출력 Table에 표시 할 수 있다.

196

CIMON SCADA HMI 고급 교육 자료

Page 197: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-1

¨ Select 질의 생성

새 질의1.

2.

● Cimon SCADA에서의 ODBC 설정을 한다. CimonD에서 [도구] > [ODBC] 메뉴를 선택한다.

● 위의 ODBC 설정 창에서 두 번째 버튼인 “새 질의” 버튼을 누르고, 나타나는 질의 정의창에서 아래와 같이 설정한다.

질의 이름 SelectAll질의 종류 기타 구문질의 동작 방법 비지정

● 입력한 후, [SQL 작성] 버튼을 클릭하여 질의를 작성한다

197

CIMON SCADA HMI 고급 교육 자료

Page 198: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-2

¨ Select 질의 생성

1.

2.

● 해당 버튼을 누르면, 위와 같이 질의를 입력할 수 있는 대화 상자 창이 화면에 나타난다.

1. 오른쪽의 [새필드] 버튼을 누르고 아래와 같이 3개의 필드를 입력한다.

필드 이름 학번태그 이름 학번데이터 종류 VARCHAR

필드 이름 이름태그 이름 이름데이터 종류 VARCHAR

필드 이름 학과태그 이름 학과데이터 종류 VARCHAR

2. 필드를 등록한 후, 왼쪽 아래에 FROM 입력란에 아래와 같이 입력한다

myTable

3. [확인] 버튼을 누르고 SELECT 질의 등록을 종료한다.

198

CIMON SCADA HMI 고급 교육 자료

Page 199: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-3

1.

● Cimon SCADA에서의 라이브러리 창을 띄운다. CimonD에서 [그림] > [라이브러리] 메뉴를 선택한다.

● 실습을 위한 페이지를 위의 화면과 같이 구성한다. 화면 구성 방법은 아래와 같다.

1.라이브러리 중– 윈도우컨트롤 을 선택한다. 2.입출력 테이블을 선택하고 마우스로 드래그 하여 페이지에 옮겨 놓는다.

199

CIMON SCADA HMI 고급 교육 자료

Page 200: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-4

1.

2.

1. 그림설정 [이름]에 grid01을 입력한다.(명령식을 사용하기 위해서는 오브젝트의 이름을 인자로 사용한다.)

2. 셀을 선택하여 더블클릭을 하면 입력창이 뜨는 데 각각 학번, 이름, 학과를 입력합니다.

3. [등록] 버튼을 누르고 입출력테이블 설정을 종료한다.

200

CIMON SCADA HMI 고급 교육 자료

Page 201: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-5

¨ 리스트업()스크립트 작성

Sub 리스트업()

CSqlOpen("SelectAll")cnt# = CSqlGetRecordNo("SelectAll")

wcGridCommand “grid01”, 7, 0, 0for i=1 to cnt

CSqlGetRecord "SelectAll", i

data1$ = GetTagval("학번")wcGridSetData "grid01",1,i, data1$

data2$ = GetTagval("이름")wcGridSetData "grid01",2,i, data2$

data3$ = GetTagval("학과")wcGridSetData "grid01",3,i, data3$

next i

CSqlClose("SelectAll")

End Sub

201

CIMON SCADA HMI 고급 교육 자료

Page 202: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-6

1. CimonX 실행 후 [작업] – [명령창]을 띄운 후 Runscript(“리스트업”)을 입력한 후 실행 한다.

2. 화면 입출력 테이블에 myTable 테이블의 레코드목록들이 리스트업 된다.

202

CIMON SCADA HMI 고급 교육 자료

Page 203: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-7

Sub ADO_Select_SQL()set conn = createobject("ADODB.connection")

conn.provider = "Microsoft.Jet.OLEDB.4.0"conn.open = "d:\test.mdb"

set rs = createobject("ADODB.recordset")rs.open "Select * from myTable", conn

do until rs.EOFmsgbox rs.fields( 0 ) + "/" + rs.fields( 1 ) + "/" + rs.fields(2)rs.MoveNext

loop

rs.closeconn.close

set rs = nothingset conn = nothing

End Sub

1. ADO(ActiveX Data Object) 란?1. 마이크로소프트가 다양한 데이터베이스에 공통적으로 접근할 수 있는 인터페

이스로 고안됨2. 스크립트 언어에서 사용할 수 있다( ADODB 자동화 인터페이스)

2. ADO 개체를 이용해 SELECT SQL 구문을 실습해보자.

203

CIMON SCADA HMI 고급 교육 자료

Page 204: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #6-8

Sub ADO_Others_SQL()set conn = createobject("ADODB.connection")

conn.provider = "Microsoft.Jet.OLEDB.4.0"conn.open = "d:\test.mdb"

sql_statement = "insert into myTable(학번,이름,학과) values('200077','나의사','임상병리')"

on error resume nextconn.execute sql_statement

if err<>0 thenmsgbox "에러 발생"

end if

conn.closeset conn = nothing

End Sub

1. ADO 를 이용한 INSERT SQL 구문을 실습해보자.

204

CIMON SCADA HMI 고급 교육 자료

Page 205: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

CIMON SCADA HMI 교육 자료

부록(Appendix)

● 기본 교육 과정 목차

1. CIMON SCADA 개요 --- 22. 핵심 용어 설명 --- 83. 화면 작화 하기 --- 154. 고정 페이지 실습 --- 335. 트렌드와 데이터 수집 --- 396. CIMON PLC 통신 실습 --- 457. 보고서 실습 --- 598. 태그의 속성 --- 689. 추가 기능 소개 --- 85

● 고급 교육 과정 목차

1. 스크립트 --- 972. I/O 디바이스 통신 상태 체킹 --- 1233. SCADA 네트워킹 --- 1264. 기타 고급 기능 및 내부 함수 --- 140

I. 엑셀 파일 생성 --- 141II. 데이터 수집 관련 --- 147III. 트렌드 관련 --- 154

5. ODBC 관련 --- 1666. DB 테이블와 그리드 실습 --- 194

● 부록 목차

1. 파일처리 관련 --- 2052. Dictionary Object --- 2113. 요일 구하기 --- 212

205

CIMON SCADA HMI 정기교육 자료

Page 206: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

1. 파일 처리

206

CIMON SCADA HMI 정기교육 자료

Page 207: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-1 파일 쓰기

¨ Sub WriteFile()

¨

¨ file_name$ = "D:\Log\"+TimeStr(14)+".txt"

¨ ‘ 파일 존재 여부 체크 해서 있을 때와 없을 때 로 나누어서 파일 처리

¨ If (FileExists(file_name$) = True) Then

¨ Open file_name$ for Append As #1

¨ else

¨ Open file_name$ for Output As #1

¨ end if

¨ ‘ 실제로 값을 쓴다

¨ Print #1, "abc"

¨ Close #1

¨ End Sub

* 내용 – D:\Log 안의 폴더안에 날짜형식의 파일을 생성 후 그 파일 안에“abc” 를 쓴다

* 확인방법 – D:Log 폴더 안으로 들어가서 텍스트 파일을 직접 열어 보아서“abc”라는 문자열이 찍혔는지 확인 한다

207

CIMON SCADA HMI 정기교육 자료

Page 208: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-2 파일 읽기

¨ Sub ReadFile()

¨

¨ UFILENAME = "SAMPLE.TXT"

¨ UFileNum = FreeFile

¨ ‘ 빈 파일 식별자를 찾은 후 파일을 연다

¨ Open UFILENAME For Input As UFileNum

¨ Do Until EOF(UFileNum)

¨ ‘ 파일 끝까지 루프를 돌면서 한 라인씩 읽어 들인다

¨ Line Input UFileNum, lnbuffer

¨ ‘ 읽은 것을 확인을 위해 메시지를 띄운다

¨ MsgBox lnbuffer

¨ Loop

¨ Close UFileNum

¨ End Sub

•내용 – 프로젝트 폴더 안의 SAMPLE.TXT 라는 파일을 읽어서 한 라인씩메시지박스를 띄운다

*확인 방법 – 우선 프로젝트 안에 “SAMPLE.TXT” 만들고 그 안에 한 줄이상의 내용을 써서 파일을 만든 후 본 스크립트를실행한다

208

CIMON SCADA HMI 정기교육 자료

Page 209: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-3 폴더 만들기

¨ Sub MakeFolder()

¨ strDirectory = "c:\logs"

¨ ' 파일 시스템 오브젝트를 생성한다(시스템)

¨ Set objFSO = CreateObject("Scripting.FileSystemObject")

¨ ' 폴더가 존재하는지 검사하고 없으면 만든다.

¨ If objFSO.FolderExists(strDirectory) Then

¨ Set objFolder = objFSO.GetFolder(strDirectory)

¨ msgbox strDirectory & " 폴더가 이미 존재합니다"

¨ Else

¨ Set objFolder = objFSO.CreateFolder(strDirectory)

¨ msgbox "폴더 생성됨 " & strDirectory

¨ End If

¤ Set objFSO = Empty

¨ End Sub

•내용 – c:\logs 폴더를 찾아보고 없으면 만들어준다.

*확인 방법 – 스크립트를 실행한 후 탐색기를 통해서 경로상에 폴더가 생성되었는지 확인한다.

폴더가 생성된 이후에 스크립트를 한번 더 수행해 본다.

209

CIMON SCADA HMI 정기교육 자료

Page 210: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

실습 #1-4 폴더 삭제

¨ Sub DelFolder()

¨ target = "C:\logs“

¨ Set fso = CreateObject("Scripting.FileSystemObject")

¨ If fso.FolderExists(target) Then

¨ fso.DeleteFolder target

¨ End If

Set fso = Empty

¨ End Sub

•내용 – c:\logs 폴더를 찾아보고 있으면 폴더를 삭제한다(폴더 내 파일포함)

*확인 방법 – 스크립트를 실행한 후 탐색기를 통해서 경로상에 폴더가 삭제되었는지 확인한다.

210

CIMON SCADA HMI 정기교육 자료

Page 211: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

Dictionary Object

¨ 키/값 쌍으로 데이터를 관리하는 자료형

¨ 키의 값은 유일하며 키값에 의해 데이터를 참조한다.

¨ 숫자/문자열을 키값으로 사용할 수 있다.

¨ 예제

set d = createobject("scripting.dictionary") ‘생성

d.add "a","test"d.add "b","test2"

Count = d.count '전체갯수 확인

if d.exists("a") then msgbox "a exists"

end if

value = d.item("a") '키의 값 참조msgbox value

d.remove "a" '키값 삭제

d.removeAll '전체 데이터 삭제

Set d = nothing '소멸

지원하는 기능은 아래와 같다.메서드

AddExistsItemsKeysRemoveRemoveAll

속성

CountItemKeyCompareMode

211

CIMON SCADA HMI 정기교육 자료

Page 212: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

부록 8. 다이얼로그

¨ 메시지 박스 띄우기(아이콘 / 타이틀 추가)

Sub MAIN()

'메세지 박스에 아이콘과 제목 붙임.'붉은 X아이콘MsgBox "This is a message box with a title and an icon." , ebCritical, "Title1"'청색 ? 아이콘MsgBox "This is a message box with a title and an icon." , ebQuestion, "Title2"'노란 ! 표시MsgBox "This is a message box with a title and an icon." , ebExclamation, "Title3"'청색 i 표시MsgBox "This is a message box with a title and an icon." , ebInformation, "Title4“

End Sub

메시지 박스에 아이콘을 추가 가능.

1. 아이콘 유형1) ebCritical

• Stop 아이콘2) ebQuestion

• Question 아이콘3) ebExclamation

• exclamation point 아이콘4) ebInformation

• Information 아이콘

212

CIMON SCADA HMI 정기교육 자료

Page 213: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

부록 8. 다이얼로그

¨ 메시지 박스 띄우기(버튼 변경)

Sub MAIN()

'메세지 박스에 버튼 표시'OK Cancel 버튼 표시MsgBox "This message box has OK and Cancel buttons." , ebOkCancel'Yes No Cancel 버튼 표시MsgBox "This message box has Yes, No, and Cancel buttons.", ebYesNoCancel'Yes No 버튼 표시MsgBox "This message box has Yes and No buttons.", ebYesNo'Retry Cancel 버튼 표시MsgBox "This message box has Retry and Cancel buttons.", ebRetryCancel

End Sub

메시지 박스에 버튼을 변경 가능.

1. 버튼 유형1) ebOKOnly

• OK 버튼만 나옴.2) ebOKCancel

• OK , Cancel 버튼3) ebAbortRetryIgnore

• Abort , Retry, Ignore 버튼4) ebYesNoCancel

• Yes , No, Cancel 버튼5) ebYesNo

• Yes, No 버튼6) ebRetryCancel

• Retry , Cancel 버튼

213

CIMON SCADA HMI 정기교육 자료

Page 214: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

부록 8. 다이얼로그

¨ 메시지 박스 띄우기(버튼 클릭 처리)

Sub MAIN()

'메세지 박스 버튼 누른것 확인.buttonValue = MsgBox ("This message box has Yes and No buttons.", ebYesNo, "Yes or No" )

'Yes 버튼 누른 경우if buttonValue = ebYes Then

Msgbox "Yes"

'NO 버튼 누른 경elseif buttonValue = ebNo Then

MsgBox "NO"end if

End Sub

메시지 박스에 버튼 클릭 정보.

1. 클릭된 버튼 정보1) ebOK

• OK 클릭2) ebCancel

• Cancel 클릭3) ebAbort

• Abort 클릭4) ebRetry

• Retry 클릭5) ebIgnore

• Ignore 클릭6) ebYes

• Yes 클릭7) ebNo

• No 클릭

214

CIMON SCADA HMI 정기교육 자료

Page 215: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

문자열 비교하기

¨ StrComp() 함수¤ 문법n 결과 = StrComp(문자열1, 문자열2, 대소문자 구분)

¤ 대소문자 구분n 0 : 대문자와 소문자를 다른 것으로 봄n 1 : 대문자와 소문자를 같은 것으로 봄

¤ 결과n 0 : 문자열1 = 문자열2n 1 : 문자열1 > 문자열2n -1 : 문자열1 < 문자열2n Null : 비교할 문자열들 중 하나 이상 Null임

예제 스크립트

Sub Main()a$ = "a"b$ = "A"rst = StrComp(a$,b$,0) ' 왼쪽이 더 큼, 소문자가 대문자보다 더 큼message = message & "a and b (대소문자구분) : " & CStr(rst) & Chr(13)

rst = StrComp(a$,b$,1) ' 같음message = message & "a and b (대소문자구분안함) : " & CStr(rst) &

Chr(13)

a$ = "a"b$ = "aa"rst = StrComp(a$,b$,0) ' 문자열이 더 긴 오른쪽이 큼message = message & "a and b (대소문자구분) : " & CStr(rst) & Chr(13)

a$ = "a"b$ = "Aa"rst = StrComp(a$,b$,0)' 왼쪽이 더 큼‘ 오른쪽 문자열이 더 길지만 길이를 비교하기 전에 대소문자 구분을 먼저

함message = message & "a and b (대소문자구분) : " & CStr(rst) & Chr(13)

rst = StrComp(a$,b$,1) ' 오른쪽이 더 큼message = message & "a and b (대소문자구분안함) : " & CStr(rst) &

Chr(13)MsgBox message

End Sub

215

CIMON SCADA HMI 정기교육 자료

Page 216: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

문자열 Format 함수

¨ Format$(값, “바꿀 문자열 형태”)

¨ 바꿀 문자열 형태에서 자주 사용되는 키워드¤ 0 : 빈자리 0 채움

¤ # : 빈자리 생략

¤ yy 혹은 yyyy : 두자리 혹은 네자리 년도

¤ m 혹은 mm : 월

¤ d 혹은 dd : 일

¤ h 혹은 hh : 시

¤ n 혹은 nn : 분

¤ s 혹은 ss : 초

Const crlf = Chr$(13) + Chr$(10)Sub Main()

a# = 1199.234

'0과 #을 이용한 값의 표시message = message & Format$(a#,"0,0.00") & crlfmessage = message & Format$(a#,"##,###,###.###") & c길

'통화 형태로 표시message = message & Format$(a#,"Currency") & c길

'부동 소수점 형태로 표시message = message & Format$(a#,"Scientific") & crlf

' 숫자 0을 제외한 모든 값은 1임message = message & Format$(a#,"Yes/No") & crlfb% = 0message = message & Format$(b%,"True/False") & crlfb% = 1message = message & Format$(b%,"On/Off") & crlf

' 날짜 와 시간 형태 지정da$ = Date$message = message & Format$(da$, "yyyy년 mm월 dd일") & c길

ti$ = Time$message = message & Format$(ti$, "hh시 nn분 ss초") & crlf

MsgBox messageEnd Sub

216

CIMON SCADA HMI 정기교육 자료

Page 217: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

Format 함수를 이용하여 요일 구하기

Sub Main()NewDate# = DateSerial(12,12,13) dayofweek = Format(NewDate#, "w")

if dayofweek = 1 thenMsgBox "일"

elseif dayofweek = 2 thenMsgBox "월"

elseif dayofweek = 3 thenMsgBox "화"

elseif dayofweek = 4 thenMsgBox "수"

elseif dayofweek = 5 thenMsgBox "목"

elseif dayofweek = 6 thenMsgBox "금"

elseif dayofweek = 7 thenMsgBox "토"

end if

End Sub

DataSerial 을 통해 데이터를 만듬.Format으로 해당 날짜를 숫자로 변경.변경된 숫자에 내용은 아래와 같음.1 : 일요일2 : 월요일3 : 화요일4 : 수요일5 : 목요일6 : 금요일7 : 토요일

217

CIMON SCADA HMI 정기교육 자료

Page 218: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

.NET ArrayList 사용법

Set list = CreateObject("System.Collections.ArrayList")

list.Add "No.1"

list.Add "CIMON"

list.Add "SCADA"

list.Sort '리스트의 항목을 정렬하는 method

list.Reverse '리스트의 항목을 뒤집는 method

msgbox list.item(0) '리스트의 0번 아이템

count = list.count '리스트의 항목갯수

index = list.indexof("CIMON",0) '해당 항목의 인덱스 참조

list.RemoveAt 0

msgbox list.item(0) '리스트의 0번 아이템

list.clear '리스트의 내용을 삭제

.NET 컴포넌트인 System.Collection.ArrayList 를 사용할 수 있다.** 일부 속성/메서드만 호환된다 **

지원되는 메서드는 다음과 같다.• Add• Remove• RemoveAt• Sort• Reverse• Clear

속성은 다음과 같다.• Capacity• Count• Indexof• Item

218

CIMON SCADA HMI 정기교육 자료

Page 219: CIMON SCADA HMI 교육자료 - blog.kakaocdn.net

메모

219

CIMON SCADA HMI 정기교육 자료