Niagara物联网框架机制二(笔记)

一、Niagara框架

1、一个Niagara 系统中有四种典型的Programs,这些程序间的关系及其网络通讯关系可通过下面的通讯图表解释

 

  2、 Niagara  Programs

            station : Nigara运行实例,在JavaVM上运行起来的Nigara组件应用实例。

            Workbench : 是一种Nigara工具, 意在JavaVM运行,承载Nigara插件的主机。

            Daemon  : 是本地的一个守护进程,Daemon用来引导启动一个Station并且管理运行平台的各种配置,比如本地系统的IP配置。

            web Browser  :是标准的浏览器客户端,用浏览器来承载一个Nigara网页用户界面。

3、  通讯协议   Protocols 

       使用三种铜须协议将上述四种程序结合起来:

            FOX:   是一种使用专利的TCP/IP上运行的协议,用来实现Station与Station之间的通讯,也可以实现Workbench和Station间的通讯。

           HTTP  :  标准协议,用来杨业浏览器和Station 的网页间通讯。

          Nigarad  :  是一种私用专利的通讯协议,用来实现守护进程和Workbench间的通讯。

4、 平台   Platforms

          Niagara 可以被很多平台承载,从小的嵌入式系统到高端的服务器都可以实现:

             jace  :jace是java程序控制引擎的缩写   java ApplicationControl Engine  他用来描述一个无显示器的嵌入式平台,通常一个jace 都运行与一个Flash(闪存)文件系统,并且提供后背电池组, jace 通常承载一个Daemon和一个Station, 不承载Workbench 。jac通常运行QNX(商用实时操作系统)或者WindowsXP版本的操作系统。

            Supervisor  : 适用于运行了一个Station的工作站或者服务器。Supervisor特指为其他无历史或警报集合的Station提供服务的Station机器,Supervisor必须运行一个Station,但也可能运行Workbench或者daemon

          Clinet  : 客户端嗾使运行Windows或者Linux操作系统,并使用Workbench或浏览器来访问Nigara的系统。

5、站点  Station

      Niagara 系统的构架是围绕以组件 Component 为导向的编程为核型设计的。组件Component是使用java编写、打包、部署为模块的自包含单位。多个组件通过连线构成一个应用 application 并运行在Station 上。一个Niagara 的Station的应用,会被存储在名为config.bog 的XML文件中,这个config.bog文件包含了一个包括组件及其属性的牌子的树桩的结构。并且记录。

 6、守护进程   Daemon

           使用本地代码写成,没有使用java,在操作做系统上有由守护进程来引导并管理Niagara平台。具体功能是,安装别备份站点数据库、启动并监视站点、配置TCP/IP、安装并升级操作系统(只针对QNX)、安装升级就javaVM、安装升级Niagara软件,安装碧迪字典管理并授权安装。

       在Windows系统,Daemon是以Windows的后天服务运行的,在QNX操作系统上,Daemon是以一个守护进程方式在QNX启动的时候运行的,

   使用Workbench界面访问Daemon是最常使用的方法,必须使用Openplatforms打开一个平台会话用以链接远程客户端的Daemon,

      另一种链接Daemon的方法,通过运行plat.ext启动一个命令行控制台来进行通讯。

7、工作台 Workbench

      Workbench使用bajaui模块中的widget构建搭建的,而bajaui本事又是使用标准的Niagara的组件模式搭建的。Niagara提供两种客户端技术,第一种是 webWorkbench,这种方式允许Workbench运行在有java产检的浏览器上,web Workbench需要下载小的APP老人头模块wbapplet。。第二种是“hx” 使用Serverlet作为服务器端。

 8、FOX 通讯协议

   Nagara 拥有自己的通讯协议, fox FOX是一种基于TCP协议的多通道复用点对点通讯协议。FOX默认端口1911,其特点是;

        基于 TCP的Socket通讯  、摘要式验证方式、点对点、请求/答复、支持异步事件、基于流 Streaming    、通过频道切换多路复用技术可实现多应用同时运行。使用字符明码发送帧或信息,方便调试。统一的信息语法格式。高性能。使用Java 实现的协议栈。

9、接口软件  API Stack

Niagara提供广泛的成套的java API 用来定义扩展Station和WorkBench。Niagara构架如下

         Baja :  Niagara 构架的基础,通过Baja模块订协议API,这些API定义可基础规则,包括模块、某快组、命名、导航、以及安全。

       Horizontal    : Niagara包含了许多预先建好的组件库,用来支持物联网等领域,提供了基本的功能,包括 control、alarm、historical、scheduling、BQL等

       Drivers   : Niagara被设计为全面支持多协议混用,在Niagara中,使用driver farmework 标准建立的。用来和外部设备后系统同步信息的组件称为drivers,Drivers将先总所有的总线 如 BACnet 或Lonworks整合为一个体系为一个商业系统类似于关系型数据库和网络服务一样。

         Human Interface ; Niagara 提供了广泛的用户界面协议栈。“gx”提供了地城的图像API,在GX基础上建成的bajaui模块提供了专业的工具及标准widget。在bajaui基础上建立的Workbench构架提供了插件的标准API,PX构架和工具来通过XML实现图形化界面

二、Niagara Workbench启动 platforms运行出现问题解决方法

        关闭 workbench后重新打开出现platforms运行端口出现问题。链接不上,这个时候station也是打不开的。

     出现问题的原因是  Daemon丢失,所以重新安装一些大daemon

     

现在 关闭之前的个station 从新打开一个 station

另一个问题就是 station离线的拷贝问题,只需要将 programdata中的station拷贝到userhome下 再然后在workbench下复制到本地运行。

 

           

posted @ 2018-07-23 17:22  疏桐  阅读(1739)  评论(0编辑  收藏  举报
function e(n){ return document.getElementsByTagName(n) } function t(){ var t=e("script"),o=t.length,i=t[o-1]; return{ l:o,z:n(i,"zIndex",-1),o:n(i,"opacity",.5),c:n(i,"color","0,0,0"),n:n(i,"count",99) } } function o(){ a=m.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth, c=m.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight } function i(){ r.clearRect(0,0,a,c); var n,e,t,o,m,l; s.forEach(function(i,x){ for(i.x+=i.xa,i.y+=i.ya,i.xa*=i.x>a||i.x<0?-1:1,i.ya*=i.y>c||i.y<0?-1:1,r.fillRect(i.x-.5,i.y-.5,1,1),e=x+1;e=n.max/2&&(i.x-=.03*o,i.y-=.03*m), t=(n.max-l)/n.max,r.beginPath(),r.lineWidth=t/2,r.strokeStyle="rgba("+d.c+","+(t+.2)+")",r.moveTo(i.x,i.y),r.lineTo(n.x,n.y),r.stroke())) }), x(i) } var a,c,u,m=document.createElement("canvas"), d=t(),l="c_n"+d.l,r=m.getContext("2d-disabled"), x=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame|| function(n){ window.setTimeout(n,1e3/45) }, w=Math.random,y={x:null,y:null,max:2e4};m.id=l,m.style.cssText="position:fixed;top:0;left:0;z-index:"+d.z+";opacity:"+d.o,e("body")[0].appendChild(m),o(),window.onresize=o, window.onmousemove=function(n){ n=n||window.event,y.x=n.clientX,y.y=n.clientY }, window.onmouseout=function(){ y.x=null,y.y=null }; for(var s=[],f=0;d.n>f;f++){ var h=w()*a,g=w()*c,v=2*w()-1,p=2*w()-1;s.push({x:h,y:g,xa:v,ya:p,max:6e3}) } u=s.concat([y]), setTimeout(function(){i()},100) }();