X-SCADA AI Tag에 Value Changed Event 등록 및 프로젝트 결과 확인하기
1. 오른쪽 솔루션 탐색기에서 Form1.cs 파일을 마우스 오른쪽 클릭한 뒤 [코드 보기]를 클릭한다.

2. 오른쪽 솔루션 탐색기에서 Form1.cs 파일을 연 뒤 using 문을 사용해 아래와 같이 작성한다.
using Xisom.Scada.Core; using Xisom.Scada.Model; |
3. Form1.cs 파일에서 아래와 같이 소스를 작성한다.
· 태그명이 value로 끝나는 태그에 값 변경 이벤트를 등록한 예제이다.
· item_ValueChanged 메소드에 대한 부분은 다음 과정에서 진행할 예정이다.
private void initTag() { try { if (Program.documentContext == null) return; foreach(var item in Program.document.Tags) { if (item.IsGroup()) { if (item.Name.ToUpper().StartsWith("_SYSTEM")) continue; if (item.Name.ToUpper().StartsWith("_DEVICES")) continue; if (item.Name.ToUpper().StartsWith("_ALARMS")) continue; var tags = Program.document.Tags.GetByFullName(item.Name); foreach (var tag in tags.Children) { if (tag.IsGroup()) { continue; } if (tag.Name.ToUpper().EndsWith("VALUE")) { tag.LiveChanged += item_ValueChanged; } } } else { if (item.Name.ToUpper().EndsWith("VALUE")) { item.LiveChanged += item_ValueChanged; } } } } catch (Exception exception) { Trace.WriteLine(exception); Debug.WriteLine("태그 이벤트 등록 실패"); } } |
initTag(); |
5) Form1.cs 파일 내에서 아래와 같이 추가로 소스를 작성한다.
· 전 과정에서 작성한 item_ValueChanged 메소드 생성에 대한 예제이다.
· 변경된 태그의 값을 tagNameBox, curValueBox 객체(화면)에 표현할 예정이다.
void item_ValueChanged(object sender, EventArgs e) { IDataTag dataTag = sender as IDataTag; Debug.WriteLine(string.Format("DateTime:{0} tagName:{1} tagValue:{2}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"), dataTag.Name, dataTag.Value)); tagNameBox.Text = dataTag.FullName.ToString(); curValueBox.Text = Convert.ToInt32(dataTag.Value).ToString(); } |
6) 추가적인 Tag에 대한 활용 방법은 아래와 같다.
(1) Tag 종류에 대한 세부 속성
· Tag의 세부 속성에 접근하기 위해서는 해당 형으로 변환 필요
var tag = dataTag as IStringTag; var tag = dataTag as IDigitalTag; var tag = dataTag as IAnalogTag; |
(2) Group에 대한 Children Tag
var g = Program.document.Tags.GetByFullName(Group명); foreach (var tag in g.Children) { ... } var port = network .RemotePort; //port |
(3) 특정 Tag 정보 추출
Program.document.Tags.GetByFullName(FullTag명); |
(4) Tag 값 쓰기
var tag = Program.document.Tags.GetByFullName(FullTag명); tag.Value = “값"; |
(5) Tag 값 읽기
var tag = Program.document.Tags.GetByFullName(FullTag명); var value = tag.Value; |
(6) Device 정보 추출
var tag = Program.document.Tags.GetByFullName(FullTag명); var device = tag.Device as IDevice; //Device 정보 device.IsAlive //Device 연결상태 |
(7) Network 정보 추출
var network = device.Connections[0] as INetworkConnection; var address = network.RemoteAddress; //IP |
7) Visual Studio 도구모음 중 [시작]을 눌러 프로젝트를 실행한다.

8) 실행된 프로그램에서 X-SCADA AI 파일을 잘 불러오는지, 직접 만든 객체들이 잘 동작하는지 확인한다.
· X-SCADA AI의 슬라이드를 조작해 값을 잘 전달하고, 모니터링 기능이 잘 동작하는지 확인한다.
· 설정값 Label에 값을 입력한 뒤 [적용] 버튼을 눌러 X-SCADA AI로 값을 잘 전달하는지 확인한다.




