VOLTTRON 失败的 Bacnet 代理程序
VOLTTRON Failing Bacnet Proxy agent
我正在尝试在 Volttron Project 中配置 bacnet 代理程序,由于某种原因,当我启动代理程序时,我在 volltron.log 中收到此错误:
能否请您指导我是否在配置文件中做错了什么?
对于设备的 IP 地址,我在配置文件中尝试了三种变体:
- IPADDRESS/24
- IP地址
- IP地址:端口(47808)
其中 <> 是设备的 IP 地址。
不幸的是 none 这些工作。
下面是各种文件的说明:
============================VOLTTRON 日志=============== =================
2016-06-28 13:55:31,888 (bacnet_proxyagent-0.1 7777) <stderr>
ERROR: socket.error: [Errno 99] Cannot assign requested address
============================================= =============================
=====================BACNET PROXY 代理配置==================== ======
"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"
I 运行 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
供应商 ID = 24
这是一个常见的错误。当您设置 bacnet 代理时,您实质上是在创建一个新的 BACnet 设备并将其放在网络上。然后 VOLTTRON 平台 BACnet 驱动程序使用此设备与网络上的设备进行通信。
除了用于通信的端口外,此设备与网络上的任何其他设备没有任何共同之处。
来自 BACnet 代理文档:
device_address - 绑定到计算机 运行 VOLTTRON 上将通过其进行 BACnet 通信的网络端口的地址。这是不是任何目标设备的地址。
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 中用于 "address" 设置的值相同,以使 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"
}
换句话说,进入代理配置的 device_address 是您的本地地址,以便 bacnet 驱动程序可以绑定到设备上的接口。
我正在尝试在 Volttron Project 中配置 bacnet 代理程序,由于某种原因,当我启动代理程序时,我在 volltron.log 中收到此错误:
能否请您指导我是否在配置文件中做错了什么? 对于设备的 IP 地址,我在配置文件中尝试了三种变体:
- IPADDRESS/24
- IP地址
- IP地址:端口(47808)
其中 <> 是设备的 IP 地址。
不幸的是 none 这些工作。
下面是各种文件的说明:
============================VOLTTRON 日志=============== =================
2016-06-28 13:55:31,888 (bacnet_proxyagent-0.1 7777) <stderr>
ERROR: socket.error: [Errno 99] Cannot assign requested address
============================================= =============================
=====================BACNET PROXY 代理配置==================== ======
"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"
I 运行 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
供应商 ID = 24
这是一个常见的错误。当您设置 bacnet 代理时,您实质上是在创建一个新的 BACnet 设备并将其放在网络上。然后 VOLTTRON 平台 BACnet 驱动程序使用此设备与网络上的设备进行通信。
除了用于通信的端口外,此设备与网络上的任何其他设备没有任何共同之处。
来自 BACnet 代理文档:
device_address - 绑定到计算机 运行 VOLTTRON 上将通过其进行 BACnet 通信的网络端口的地址。这是不是任何目标设备的地址。
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 中用于 "address" 设置的值相同,以使 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"
}
换句话说,进入代理配置的 device_address 是您的本地地址,以便 bacnet 驱动程序可以绑定到设备上的接口。