X-SCADA AI Tag에 Value Changed Event 등록 및 프로젝트 결과 확인하기

XISOM.NET

X-SCADA AI Tag에 Value Changed Event 등록 및 프로젝트 결과 확인하기

관리자 0 1746

1. 오른쪽 솔루션 탐색기에서 Form1.cs 파일을 마우스 오른쪽 클릭한 뒤 [코드 보기]를 클릭한다.

7c6cddbb89eae9e0abcbaa2e03e42b7b_1707358938_0838.png
 


2. 오른쪽 솔루션 탐색기에서 Form1.cs 파일을 연 뒤 using 문을 사용해 아래와 같이 작성한다.

7c6cddbb89eae9e0abcbaa2e03e42b7b_1707358946_1304.png 

using Xisom.Scada.Core;

using Xisom.Scada.Model;



3. Form1.cs 파일에서 아래와 같이 소스를 작성한다.

· 태그명이 value로 끝나는 태그에 값 변경 이벤트를 등록한 예제이다.

· item_ValueChanged 메소드에 대한 부분은 다음 과정에서 진행할 예정이다.

5b6b3645aa42ac4e57b94cec1bdcdd6c_1765254729_7799.png
 

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("태그 이벤트 등록 실패");

    }

}

 

4) public Form1()에 아래와 같이 initTag(); 를 추가 작성한다.
5b6b3645aa42ac4e57b94cec1bdcdd6c_1765254753_1674.png
 

initTag();



5) Form1.cs 파일 내에서 아래와 같이 추가로 소스를 작성한다.

· 전 과정에서 작성한 item_ValueChanged 메소드 생성에 대한 예제이다.

· 변경된 태그의 값을 tagNameBox, curValueBox 객체(화면)에 표현할 예정이다.

5b6b3645aa42ac4e57b94cec1bdcdd6c_1765255929_0941.png

 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 도구모음 중 [시작]을 눌러 프로젝트를 실행한다.

5b6b3645aa42ac4e57b94cec1bdcdd6c_1765256255_9981.png


8) 실행된 프로그램에서 X-SCADA AI 파일을 잘 불러오는지, 직접 만든 객체들이 잘 동작하는지 확인한다.

· X-SCADA AI의 슬라이드를 조작해 값을 잘 전달하고, 모니터링 기능이 잘 동작하는지 확인한다.

· 설정값 Label에 값을 입력한 뒤 [적용] 버튼을 눌러 X-SCADA AI로 값을 잘 전달하는지 확인한다.

5b6b3645aa42ac4e57b94cec1bdcdd6c_1765256269_3089.png
 

0 Comments
제목