AF SDKを用いたAFエレメントのオブジェクト生成について

PI System Explorerを使用して、AFデータベースにエレメントツリー構造を作成しました。

AFデータベース上に存在するエレメントを対象にAF SDKを用いてオブジェクト生成を検証しております。

特定のエレメントオブジェクトの生成と、そのエレメントが持つ特定の属性オブジェクトの

生成はどのようすれば宜しいでしょうか?

 

 

AFElement element = new AFElement()

AFAttribute attribute = new AFAttribute()

Parents
  • ご質問ありがとうございます。

     

    エレメントオブジェクトについても属性オブジェクトについても必ず階層構造を構成する必要があります。

    そのため、親となるオブジェクトの参照まで取得し、そのオブジェクトが保持するコレクションに追加するという方法で実現します。

     

    エレメントオブジェクトの生成については以下の2通りの方法があります。

    1. 事前にオブジェクトをnewした後、親オブジェクトのコレクションに追加
    2. 親オブジェクトのコレクションに追加した後、対象オブジェクトの取得

     

    属性オブジェクトの生成については対象エレメントのコレクションに追加した後、対象オブジェクトを取得して編集する事となります。

     

    以下にサンプルコードを記載いたします。

     

     private void button1_Click(object sender, EventArgs e)
     {
     PIServer piServer = PIServer.FindPIServer("MHAYAKAWA7440Z");
    
     PISystems piSystems = new PISystems();
     PISystem piSystem = piSystems.DefaultPISystem;
     AFDatabase database = piSystem.Databases.DefaultDatabase;
    
     // 先行してElementを作成する場合
     AFElement preElement = new AFElement();
     preElement.Name = "先行作成エレメント";
     AFAttribute preAttribute = preElement.Attributes.Add("属性1");
     preAttribute.PIPoint = PIPoint.FindPIPoint(piServer, "CDT158");
     database.Elements.Add(preElement);
    
     // CollectionにAddしてElementを作成する場合
     AFElement postElement = database.Elements.Add("追加作成エレメント");
     AFAttribute postAttribute = postElement.Attributes.Add("属性2");
     postAttribute.PIPoint = PIPoint.FindPIPoint(piServer, "SINUSOID");
     database.CheckIn();
     }
    

    AFElementクラスにはElementsプロパティが存在しますので、エレメントの階層構造を構築する場合にはこちらのプロパティを使用してください。

    追加の手順につきましてはAFDatabseのElementsプロパティと同様です。

  • ところで、AFAttributeの作成のサンプルコードはLiveLibraryにあります。

    AFAttribute Class

Reply Children
No Data