艾默生Ovation DCS OPC服务分析

     艾默生的OPC DA服务器,使用的ProdId为“Ovation.OPCDAServer.1”,GUID值是{A3ABA03B-6CF7-4b13-A264-FD5AA251CC76}。

      OPC DA服务器版本方面,有支持OPC3.0的,也有支持OPC2.0的,影响的主要的OPC3.0支持直接读取变量值。

      在OPC的浏览层次方面,采用域(节点?工作站?)、单元、站、变量、变量属性5层结果,第5层为变量的属性值,不同类型的属性值有所差别,几十到上百不等。

艾默生Ovation DCS OPC服务分析_第1张图片

      比如我们定义了一个Pascal001的变量,最终包含的全部OPC点和对应的点类型如下:

Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],,Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],String
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Number
Pascal001.DROP1/[email protected],Integer

  点的层级和浏览的节点层级刚好相反。 

  重点需要关注点的属性有.ED、.1W、.AV,ED是点的描述,1W的整数值,AV的模拟量的值。艾默生的数据点1W还有一个特殊写法,后面可以加":0",表示取整数的第0位的值,这时变量实际上已经是开关量了。

艾默生Ovation DCS OPC服务分析_第2张图片

   OPC对应点的名称没有过多的约束,艾默生的点名称充分体现了这一点,点中可以包括很多特殊符号,如:“-”、“/”、“#”、">"、"<"、"("、")"等,路径中还有"@"符号。

   点的OPC Item Properties方面,有常规的数据类型、数据值、数据质量和时戳等,也有OPC扩展的数据描述(Item Description,对应ID 101)等。

 艾默生Ovation DCS OPC服务分析_第3张图片

     在采集数据时,可以考虑从DCS直接导出数据点的定义文件,这个方法比较简单和直接。

     如果采用枚举方法,只能采用BRANCH方式,不支持FLAT方式。需要考虑他的特殊的结构带来的庞大的点名称。在艾默生中定义10万个点,浏览出来的数据点数量可能达到千万级别。

你可能感兴趣的:(IoT,物联网,网络协议,iot)