查看: 15159|回复: 67

Link的5个层次

  [复制链接]
mhuang 发表于 2020-5-20 23:10:18 | 显示全部楼层 |阅读模式
本帖最后由 mhuang 于 2020-5-20 23:22 编辑

来看这个帖子的人都知道Niagara的Link,逻辑控制大部分都是通过Link实现的,所以Niagara调试工程师肯定少不了用到Link。是否全部的link都用到了呢?下面以5种不同的场景为例。
场景一,普通Link
Source和Target在同一个目录(或组件)下
这种操作很简单,在Wiresheet视图下,选择Source的Slot,连接到Target的Slot即可。
参加过TCP培训的人都熟悉这种操作。
Link1.gif

场景二,Link Mark
Source和Target在不同目录下,例如
Source:/Test/SourceFolder/BooleanWritable
Target:/Test/TargetFolder/BooleanWritable
方法是先右键点击Source,选择菜单Link Mark,然后选择Target,选择菜单“Link From xxx”,最后选择两个对象的Slot即可。


参加过TCP培训的人都应该会这种操作。

LinkMark.gif

场景三,Link by ProgramService
这种场景也非常常见,比如通过一个Schedule,控制几百个FCU的设定温度
刚好看到前面有人写过,这里去这个链接找就好了:https://www.niagara-china.com/forum.php?mod=viewthread&tid=26659&extra=
参加过N4 高级TCP培训的人应该都会这种操作

场景四,集成与逻辑分离
Source:/Drivers/BacnetNetwork/Device1/Points/point1
              /Drivers/BacnetNetwork/Device1/Points/point2
              /Drivers/BacnetNetwork/Device1/Points/point3
              ......
              /Drivers/BacnetNetwork/Device1/Points/point20
Target:  /MyLogic/Logic1/point1
             /MyLogic/Logic1/point2
             /MyLogic/Logic1/point3
              ......
             /MyLogic/Logic1/point20
需要做的是,将Source目录下的点,链接到Target目录下名字相同的点。





这就可以考虑使用 Program 组件来实现了
首先,为Program添加两个slot,类型都是baja:Ord,名称分别为source和target,source设置为“station:|slot:/Drivers/BacnetNetwork/Device1/Points”,target设置为“/MyLogic/Logic1”
然后添加代码如下:
  1. public void onExecute() throws Exception
  2. {
  3.   // execute code (set executeOnChange flag on inputs)
  4.   BComponent source = (BComponent)getSource().get();
  5.   BComponent target = (BComponent)getTarget().get();
  6.   
  7.   Property[] points = source.getDynamicPropertiesArray();
  8.   for(int i=0;i<points.length;i++)
  9.   {
  10.     BValue obj1,obj2;
  11.     obj1 = source.get(points[i]);
  12.     obj2 = target.get(points[i].getName());
  13.     if(obj2==null) continue;
  14.    
  15.     if(obj1 instanceof BControlPoint && obj2 instanceof BControlPoint)
  16.     {
  17.       BControlPoint p1 = (BControlPoint)obj1;
  18.       BControlPoint p2 = (BControlPoint)obj2;
  19.       Property prop = p2.getProperty("in10");
  20.       if(prop==null) continue;
  21.       p2.add("lnk?",
  22.         p2.makeLink(p1,p1.getOutProperty(),prop,null) );
  23.       
  24.     }
  25.   }
  26. }
复制代码
这里将写好的Program贴上,回复后就可以看了
游客,如果您要查看本帖隐藏内容请回复


场景五,标签Link
标签Link是指我只需要在站点里面按需要打上相应标签,最后执行一下Program,即可自动打上标签,Link可以连接同一个Folder下的组件,也可以跨不同Folder。
TagLink.gif
代码稍微复杂一点,还是附上Program 模块吧
游客,如果您要查看本帖隐藏内容请回复


评分

1

查看全部评分

 楼主| mhuang 发表于 2020-5-20 23:14:05 | 显示全部楼层
场景一、场景二参加过N4 TCP培训的人都会操作。场景三是在N4 Advanced TCP培训里介绍的。场景四、场景五需要有一点JAVA基础,并参加过N4 开发培训的人可以随意的修改link规则
无眠 发表于 2020-5-20 23:25:05 来自手机 | 显示全部楼层
居然自己坐沙发,不厚道!
 楼主| mhuang 发表于 2020-5-20 23:26:51 | 显示全部楼层
无眠 发表于 2020-5-20 23:25
居然自己坐沙发,不厚道!

yang3221 发表于 2020-5-26 13:39:39 | 显示全部楼层
下在来看看
Justin 发表于 2020-6-27 20:56:28 | 显示全部楼层
黄总,这个对系统集成相当有用,可否看一下源码。
yzjyzy 发表于 2020-6-29 13:47:44 | 显示全部楼层
我就是过来点个赞!
加菲猫007 发表于 2020-7-24 15:53:35 | 显示全部楼层
谢谢大神分享。
langsan333 发表于 2020-8-24 21:55:12 | 显示全部楼层
向martin学习
Great-Win 发表于 2020-8-29 11:33:47 | 显示全部楼层
谢谢大神分享
renyan1519aliyu 发表于 2020-9-3 08:03:22 | 显示全部楼层
大神BComponent 原有的 checkLink 可以使用吗?
guoxiongdi 发表于 2020-9-12 21:19:10 | 显示全部楼层
过来看看大神
TurkeyTsai 发表于 2020-9-15 00:38:55 | 显示全部楼层
剛好用得上,感謝大神大恩大德
 楼主| mhuang 发表于 2020-9-28 09:08:44 | 显示全部楼层
Justin 发表于 2020-6-27 20:56
黄总,这个对系统集成相当有用,可否看一下源码。

回帖可以下载源码的
klyxtxz 发表于 2020-11-12 14:05:16 | 显示全部楼层
Link的5个层次
加纳巧克力 发表于 2020-12-8 10:40:03 | 显示全部楼层
非常有用,非常感谢感谢
cjc0902 发表于 2020-12-8 20:33:58 | 显示全部楼层
谢谢大神分享!赞!!
hitswint 发表于 2020-12-18 13:01:41 | 显示全部楼层
一直搞不太明白relation和link的区别

点评

Link 属于一种 relation,relation的概念很大,比如 一个point在一个folder下,他们就构成了child和parent关系; 两个point建立link,他们就构成连接关系; 一个AHU给多个VAV供风,他们就可以构成一种关系。  发表于 2021-1-10 22:13
stronger 发表于 2021-1-7 22:08:55 | 显示全部楼层
领教了,只用过前2个
hongzhimin09 发表于 2021-1-8 22:40:41 | 显示全部楼层
谢谢,非常受用
BAS007 发表于 2021-1-11 15:59:29 | 显示全部楼层
看来不能够只停留在应用层了
zhouchen1113 发表于 2021-1-22 14:19:45 | 显示全部楼层
学习一下,感谢分享
hihippo 发表于 2021-1-28 10:04:22 | 显示全部楼层
Thanks for sharing.
danielsun 发表于 2021-1-29 08:26:00 | 显示全部楼层
都三种都会。。。四五还是非常值得学习的。批量操作太有用了
llhyy0509 发表于 2021-2-2 14:30:12 | 显示全部楼层
正好需要这方面的,谢谢
權... 发表于 2021-2-4 15:22:10 | 显示全部楼层
学写了,感谢分享
權... 发表于 2021-2-4 15:29:38 | 显示全部楼层
感谢大佬,学习了
小新 发表于 2021-4-7 10:02:50 | 显示全部楼层
学习一下~
小新 发表于 2021-4-7 10:09:10 | 显示全部楼层
学习一下~
hzxiao_2003 发表于 2021-4-11 18:31:34 | 显示全部楼层
再次学习一下
tator 发表于 2021-4-14 09:32:49 | 显示全部楼层
let's have a look
孤城枫 发表于 2021-4-14 23:03:31 | 显示全部楼层
有用,学习一下
patrtone 发表于 2021-4-15 10:49:00 | 显示全部楼层

谢谢大神分享。
深沈杭 发表于 2021-5-3 13:28:27 | 显示全部楼层
好东西,谢谢
曾建红 发表于 2021-5-17 21:40:02 | 显示全部楼层
感谢大神分享,这个功能太实用了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|使用条款|隐私条款|

Niagara Framework 中文技术社区 ( 沪ICP备15008415号-33 )

GMT+8, 2021-6-24 22:27 , Processed in 0.079391 second(s), 26 queries .

快速回复 返回顶部 返回列表