Bacnet设备无法识别pointName

时间:2016-07-05 22:51:57

标签: python bacnet volttron

以下是我对伏特龙的配置。我附加了一个与bacnet兼容的VAV,我使用grab_bacnet生成了config csv。问题是bacnet代理以及在bacnet驱动程序中刮掉所有方法都无法从设备中获取任何内容。

这也是要注意当我启动bacnet代理程序和主驱动程序代理时,在volttron.log中没有显示错误。 但我尝试下面显示的测试代理我得到一个keyError,它告诉我要求是错误的设备或bacnet根本无法识别设备。

**Configurations**
*Master Driver*
{
     "agentid": "master_driver",
      "driver_config_list: ["absolute/path/to/test_bacnet1.config"]
}

**test_bacnet1.config** 
{
   "driver_config": {"device_address": "192.168.1.9",
                  "device_id":"990037" },
   "campus": "campus",
   "building": "building",
   "unit": "bacnet1",
   "driver_type": "bacnet",
   "registry_config":"absolute/path/to/csv.csv",
   "interval": 60,
   "timezone": "UTC"
 }

 *BACNET PROXY CONFIGURATIONS*
    "device_address": "192.168.1.5/24" #MY Laptop IP address

这是我在测试代理未运行时得到的错误。

ERROR: Failed to scrape campus/building/bacnet1: 
RuntimeError('Device communication aborted: noResponse')

其次在我的TestAgent通过执行器我打这样的电话:

          topic2 = 'campus/building/bacnet1/dmp_pos_1'
          PLATFORM_ACTUATOR = 'platform.actuator'
          PLATFORM_BACNET = 'platform.bacnet_proxy'
          REQUEST_NEW_SCHEDULE = 'request_new_schedule'    

          @Core.periodic(3)                                                                                                  
          def publish_heartbeat(self):                                                                                       
              _log.info('Agent Starting')                                                                                     
              result = self.vip.rpc.call(                                                                                     
                       PLATFORM_ACTUATOR,  # Target agent                                                                     
             'get_point',  # Method                                                                                 
              topic2  # point                                                                                        
                    ).get(timeout=10)                                                                                      
               _log.info('RESULT:'+str(result)

伏特匠给我错误:    RemoteError:volttron.platform.jsonrpc.RemoteError(" KeyError异常(' dmpr_pos_1')&#34)

编辑1     python scripts / bacnet / bacnet_scan.py --ini scripts / bacnet / BACpypes.ini

 Device Address        = <Address 192.168.1.9>
    Device Id             = 570009
    maxAPDULengthAccepted = 480
    segmentationSupported = segmentedBoth
    vendorID              = 24

    Device Address        = <RemoteStation 5701:37>
    Device Id             = 990037
    maxAPDULengthAccepted = 480
    segmentationSupported = segmentedBoth
    vendorID              = 24

之后我像这样运行了grab_bacnet:

python scripts/bacnet/grab_bacnet_config.py 990037 --ini scripts/bacnet/BACpypes.ini --out-file bac3.csv

在csv文件中,其中一个值是这样的:

    Reference Point Name    Volttron Point Name            Units                        Unit Details    BACnet Object Type  Property        Writable    Index   Write Priority  Notes
    flow_sp_1               flow_sp_1               cubicFeetPerMinute                                  analogValue         presentValue    FALSE          5                    Airflow Setpoint
    dmpr_pos_1              dmpr_pos_1              UNKNOWN UNIT ENUM VALUE: 4109                       analogValue         presentValue    FALSE          8                    Damper Position

任何人都可以指导我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

这里看起来有两个问题。

首先看起来设备根本没有响应。这可能是由于配置问题test_bacnet1.config造成的。

首先用于获取配置的命令行是什么?

其次,您在代理中使用的点名称与CSV文件中的点名称之间似乎不匹配。

请发布您的CSV文件的内容,以便我们可以看到可用的点名称。

修改

(我们事先在电话中解决了这个问题,但我会在这里为后人添加它。)

问题是您没有提供设备ID和地址的正确组合。地址始终是实际设备的地址,而不是可能恰好位于其前面的路由器。设备ID始终是实际的设备ID。

从bacnet_scan的输出中,您将使用“5701:37”作为地址,使用990037作为设备ID。

关键错误是错误设置的副作用。

最近添加了设备ID,以确保在大多数情况下BACnet代理可以建立到设备的路由。

答案 1 :(得分:0)

谢谢凯尔。我们的硬件配置使用BACnet路由器(ID 570009)和VAV控制器(ID 990037)。使用抓取配置,我们必须拥有两个寄存器点文件,并带有指定的Volttron Point Names。

这些是VAV控制器csv文件的grab_config输出测试列(As Priyank提到我们有大约75个注册点,但我们显示了两个点,我们正在尝试修改flow_sp_1和dmpr_pos_1):

Reference Point Name    Volttron Point Name            Units                        Unit Details    BACnet Object Type  Property        Writable    Index   Write Priority  Notes
flow_sp_1               flow_sp_1               cubicFeetPerMinute                                  analogValue         presentValue    FALSE          5                    Airflow Setpoint
dmpr_pos_1              dmpr_pos_1              UNKNOWN UNIT ENUM VALUE: 4109                       analogValue         presentValue    FALSE          8                    Damper Position

我们不确定这是否是一个grab_config问题。这些是设备的原始点列表。

Name              Value    Type  ObjectID DeviceID     Object Name  COVIncrement
Airflow Setpoint 2000.0cfm  BAV   AV:5    DEV:990037    flow_sp_1   1                   
Damper Position 100.0 %Open BAV   AV:8    DEV:990037    dmpr_pos_1  2

似乎Volttron(或grab_config)使用对象名称。

如果您能引导我们找到错误,我们将不胜感激。 我们还使用BACnet路由器ID而不是VAV设备IS修改了配置文件。 但我们仍然得到keyError

**test_bacnet1.config**
{ "driver_config": {"device_address": "192.168.1.9", "device_id":"570009" },...