0

所以下面是我对volttron的配置。我有一个与 bacnet 兼容的 VAV,我使用 grab_bacnet 在其上生成了配置 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

这是我在 testagent 未运行时得到的错误。

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)

volttron 给我错误:RemoteError:volttron.platform.jsonrpc.RemoteError("KeyError('dmpr_pos_1')")

编辑 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

谁能指导我解决这个问题?

4

2 回答 2

1

看起来这里有两个问题。

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

您最初用来获取配置的命令行是什么?

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

请张贴您的 CSV 文件的内容,以便我们查看可用的点名称。

编辑

(我们实际上早先在电话上解决了这个问题,但我会在这里添加它以供后代使用。)

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

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

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

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

于 2016-07-06T00:34:58.217 回答
0

Thanks Kyle. Our hardware configuration uses a BACnet router (ID 570009) and a VAV controller (ID 990037). With grab config, we've got to have both register points files, with the designated Volttron Point Names.

These are the grab_config out-test columns for the VAV controller csv file (As Priyank mentioned we got around 75 register points but we are showing two points that we are trying to modify flow_sp_1 and 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

We are not sure if this is a grab_config issue. These are the original point list of the device.

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

Seems Volttron(or grab_config) uses the Object Name.

We would appreciate if you could guide us to find the mistake. We also modified the config file using the BACnet router ID instead of the VAV device IS. But we still get the keyError

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

于 2016-07-06T18:45:46.143 回答