Niagara程序入门

 Sources By:   nightycd 



献给和几个月前的我一样的对Niagra模块编程不知如何着手的同学们。
首先,说明一下要编制的模块的功能,很简单,假设一个设备有3个错误干结点,将其在一个字符点输出该设备的错误原因,例如干结点1为真则输出断电,干结点2错误输出保险丝融毁,干结点3为真错误点输出缺相保护
第二,预备条件,NiagaraAXEclipseEclipse_Niagara_PluginNiagaraEclipse插件要安装好()。设置好Eclipse插件中NiagaraAX的地址。
下面开始:
1.New AX Module,填写模块名等信息,例如
 
2.
添加依赖包,例如
 
3.
添加工程包,例如
 
4.
完成向导。
5.右键单机刚建立工程里com.sh.eb包,选new->new class,填写类名并设定依赖包(JAVAX.BAJA.SYS.BConponent),例如
 
此步要注意的是,类名首字母必须是大写B,第二个字母必须大写,否则Niagara插件的Slotomatic工具可能不过滤你的类文件。
建立好类后,应显示类,  /*开头 -*/ 结尾结尾的Slotomatic注释区域,该区域用起来很方便。
6.使用Niagara插件的Slotomatic工具,过滤你的文件,如条件符合,你会发现类文件中多了类型返回语句,点击Ctrl+shift+o,添加javax.baja.sys.TYPE类型的import
还有,module-include.xml文件中添加了如下语句

7.
添加输入属性和输出属性,将例子中BErroBand类中的Slotomatic注释区域编辑为如下语句
  /*-
   class BErroBand
   {
     properties
     {       
       InBool_1:BStatusBoolean
       default{[ new BStatusBoolean(false) ]}
       flags{ summary,executeOnChange }
      
       InBool_2:BStatusBoolean
       default{[ new BStatusBoolean(false) ]}
       flags{ summary,executeOnChange }
      
       InBool_3:BStatusBoolean
       default{[ new BStatusBoolean(false) ]}
       flags{ summary,executeOnChange }
      
       InBool_1_BindingString:BStatusString
       default{[ new BStatusString("Bool_1 band Message") ]}
       flags{ summary }
      
       InBool_2_BindingString:BStatusString
       default{[ new BStatusString("Bool_2 band Message") ]}
       flags{ summary }
      
       InBool_3_BindingString:BStatusString
       default{[ new BStatusString("Bool_2 band Message") ]}
       flags{ summary }
      
       OutMessage : BStatusString
       default{[new BStatusString("")]}
       flags{summary}
     }
     actions
     {
     }
     topics
     {
     }
   }
   -*/


其中InBool_123为输入的3个设备故障干结点,有任何变化都会触发事件。
InBool_1_BindingString InBool_2_BindingString InBool_3_BindingString分别为3个故障干结点所对应的设备故障信息字符串。
OutMessage为设备的总的故障信息输出点。
其格式对应含义为
       InBool_1:BStatusBoolean                         //属性名及类型
       default{[ new BStatusBoolean(false) ]}  //默认值及构造函数
       flags{ summary,executeOnChange }      //属性标签函数,executeOnChange标识该属性一有变化就会触发OnChange事件。
8.运行Slotomatic工具,会发现函数内自动增加了上述属性的语句。点击Ctrl+shift+o,添加引用类,如下图
 
9.
手工添加模块的OnChange事件函数,在自动代码后添加如下代码,含义见注释

//OnChange Event

//
覆盖BComponent类中的changed事件,意即只要flags里包含executeOnChange 属性的任意一个属性值有变化,都会
//调用该函数,发生变化的属性作为property参数传入。
  public void changed(Property property , Context context)
  {
    super.changed(property, context);           //
基类事件调用
    if(!isRunning())                                         //模块没在运行则跳过
    return;
    else if(Flags.isExecuteOnChange(this, property))
    {
      if(property.getName().equals(InBool_1.getName()))     //
如果发生变化的属性的名称是InBool_1的名称
        getOutMessage().setValue(getInBool_1_BindingString().getValue().toString()); //就将InBool_1_BindingString()的字符串值赋值给
                                                                                                                                     //OutMessage属性。下同
     
      else if(property.getName().equals(InBool_2.getName()))
        getOutMessage().setValue(getInBool_2_BindingString().getValue().toString());
     
      else if(property.getName().equals(InBool_3.getName()))
        getOutMessage().setValue(getInBool_3_BindingString().getValue().toString());
    }
  }
10.
打开module.palette文件,在其中

语句下添加如下语句


具体含义为:
     AXpalette工具下         模块名,不是类名     模块下的类名
      的名称
此文件将使我们的模块在AX中的Palette工具窗口中出现可拖动的工具图标。

11.运行Slotomatic工具,再运行Niagara工具里的Build FUll工具,编译为erroBand.jar模块发布到NiageraAX安装目录下的Module目录中。
12.运行AX,建立站点,用Palette工具栏打开erroBand.jar模块,将erroBandTool拖入连线视图,实验功能是否实现。如下图
 

关于工程中几个文件的作用:
1.build.xml文件,主管模块的依赖信息等编译链接信息,上例中的123步都在此文件中有体现,可手工添加,Slotomatic工具不在此文件中自动添加。
2.module-include.xml 文件,主管模块中类型对应、管理,如上例中工程建立的实际类名为BErroBand,在此文件中被映射为ErroBand,并且在module.palette文件中使用的是ErroBand这个名称。Slotomatic工具会在此文件中添加必要的语句,但一些高级功能就要手工添加了。

注:本教程仅供参考,如有错漏请指正,所做模块功能基本能用,但要真用到实际当中的话就要进一步改进。

 

 

这个PXInclude的功能真的是非常实用,也很好的体现了界面复用的效果,可以大大提高我们工程中的效率,同时由于可以复用图形界面,也可以缩小Station的空间,提高效率。
1。利用PX建立重复使用的图形元素,这个元素有别于我们使用的Module,应该是图形Module的各种组合,例如文档中使用的ahuRow.px
2。为这些图形元素定义相对数据源,固定名字,但路径是相对的;
3。定义各种动画;
4。使用时,指定路径就可以,只要数据点名称一致,就可以建立与PX界面的连接;
5。修改图形元素的PX,所有引用的地方都会修改,大大缩短时间。

这里提出了一个问题,什么是好的命名规则:
以前的软件中,我们习惯用具体的位置和属性来为一个点命名,如:
1#空调送风温度
1F_23#水泵运行状态

但是在Niagara中,点是通过位置+名字来引用的,名字只是这个点的内容,这样子的好处是点的命名变得很简单,并且根据位置很容易重复引用不同的数据。如:
config\1F\AHU1\SupplyTemp
comfig\Driver\Lonworknetwork\DDC1\AHU2\SupplyTemp


这个两个点的名字完全相同,可是它们代表不同设备的数据。也就是说位置信息尽量用文件夹来表示和管理。
一旦我们指定了引用的位置,PX只需要查找相同的名字就可以。

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(NiagaraAX楼宇开发,Tridium组件开发)