VOLTTRON失败的Bacnet代理商

时间:2016-06-28 21:17:51

标签: python python-2.7 bacnet volttron

我正在尝试在Volttron Project中配置bacnet委托代理,由于某种原因,当我启动委托代理时,我在volltron.log中收到此错误:

请指导我是否在配置文件中做错了什么? 对于设备的IP地址,我在配置文件中尝试了三种变体:

  1. IPADDRESS / 24
  2. IPADDRESS
  3. IPADDRESS:PORT(47808)
  4. 其中<>是设备的IP地址。

    不幸的是,这些都不起作用。

    以下是各种文件的描述:

    ============================ VOLTTRON LOG ================= ===============

    2016-06-28 13:55:31,888 (bacnet_proxyagent-0.1 7777) <stderr> 
    ERROR: socket.error: [Errno 99] Cannot assign requested address
    

    =============================================== ===========================

    ===================== BACNET PROXY AGENT CONFIG ====================== ====

    "agentid": "bacnet_proxy",
    
    #Maximum APDU legnth accepted
    #This setting determines the largest APDU accepted by the Volttron BACnet virtual device.
        #Valid options are 50, 128, 206, 480, 1024 (default), and 1476
        "max_apdu_length": 480,
    
        #ID of the Device object of the virtual bacnet device.
        #Defaults to 599
        "object_id": 570009,
    
        #Name of the bacnet network object
        #Defaults to "Volttron BACnet driver"
        #"object_name": "Volttron BACnet driver",
    
        #Vendor ID of the virtual bacnet device.
        #Defaults to 15
        "vendor_id": 24,
    
        #Required, use this network interface for the virtual device.
        "device_address": "192.168.1.9"
    

    我运行了volttron / scripts / bacnet / bacnet_scan.py,结果如下:

    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

2 个答案:

答案 0 :(得分:3)

这是一个常见的错误。当您设置bacnet代理时,您实际上是在创建一个新的BACnet设备并将其放在网络上。然后,VOLTTRON平台BACnet驱动程序使用此设备与网络上的设备进行通信。

除了与之通信的端口外,此设备与网络上的任何其他设备没有任何共同之处。

来自BACnet代理文档:

device_address - 绑定到网络端口的地址,在运行VOLTTRON的计算机上进行BACnet通信。这是 NOT 任何目标设备的地址。

http://volttron.readthedocs.io/en/develop/core_services/drivers/BACnet-Proxy-Agent.html

例如,如果您的VOLTTRON安装在IP为192.168.1.2的计算机上,您可以将其用于BACnet代理配置文件中的 device_address 设置。

它与您在volttron / scripts / bacnet / BACpypes.ini中使用的“地址”设置相同,以使bacnet_scan.py脚本正常工作。

这是必要的,BACnet协议使用UDP进行所有通信,并且必须打开一个端口来收听响应。

您还必须在代理配置中将“object_id”设置更改回599. 根据bacnet_scan的输出,使用570009会导致与您尝试设置的设备发生冲突。在BACnet的说法中,这是设备ID。 BACnet网络上的所有设备ID都必须是唯一的。

您希望与之通信的设备的地址用于MasterDriverAgent配置中特定设备的配置。

例如使用MasterDriverAgent配置:

{
    "agentid": "master_driver",
    "driver_config_list": [
        "/home/volttron/volttron/examples/configurations/drivers/bacnet.config"                 
    ]
}

您可以将目标设备地址放在bacnet.config中:

{
    "driver_config": {"device_address": "192.168.1.9",
                      "device_id": 570009},
    "campus": "campus",
    "building": "building",
    "unit": "bacnet1",
    "driver_type": "bacnet",
    "registry_config":"/home/volttron/volttron/examples/configurations/drivers/bacnet.csv",
    "interval": 60,
    "timezone": "UTC"
}

答案 1 :(得分:2)

换句话说,进入代理配置的device_address是您的本地地址,因此bacnet驱动程序可以绑定到设备上的接口。