我正在使用http://bacnet.sourceforge.net/的bacnet堆栈与mitshubishi bacnet网关(型号bac-hd150)。网络设置正确,我可以做正确的bacnet和bacnet epic:
;Device MAC (hex) SNET SADR (hex) APDU
;-------- -------------------- ----- -------------------- ----
5053 C0:A8:00:0A:BA:C0 0 00 1024
4194303 C0:A8:00:BD:BA:C0 0 00 1476
100 C0:A8:00:0B:BA:C0 0 00 1024
;
; Total Devices: 3
设备100是有问题的bacnet设备。 该设备的Bacnet史诗附有邮件。
然而,每当我尝试从这个设备读取和写入任何属性时,我总是得到:
BACnet Error: object: unknown-object
对于此设备: 对象列表:http://img36.imageshack.us/img36/7102/jv7a.png 实例编号:http://img706.imageshack.us/img706/1948/yocq.png
现在基于此,我试图读取一个属性(ON OFF STATE),如下所示: 用法:bacrp device-instance object-type object-instance property [index]
./bacrp 100 3 2 85
where
100 : device-instance
3: object-type ( binary input, according to [http://img36.imageshack.us/img36/7102/jv7a.png][1] )
2: object-instance ( instance number according to
[http://img706.imageshack.us/img706/1948/yocq.png][2] )
85: property ( PROP_PRESENT_VALUE according to bacenum.h file )
但是,响应始终是:
root@FINGI:/tmp# ./bacrp 100 3 2 8
BACnet Error: object: unknown-object
有人可以建议可能出错吗?我为对象实例尝试了不同的值(例如0到10),但结果总是相同的。
拼命试图完成这项工作!任何建议都将非常受欢迎
答案 0 :(得分:2)
只需读取设备对象的对象列表,属性ID 76即可。您将获得所有有效对象标识符的列表。
此外,如果我将项目特定的实例编号规则解释正确,则所需对象“ON OFF STATE”的实例编号为01xx02,其中xx为组。我不知道您的项目中有哪些“组”。你可以为第一组尝试10102。
答案 1 :(得分:0)
答案是指“对象列表” /“对象列表”,其中的第一个数据元素/数组索引值是数组中包含的数据元素的计数,但其余的应该是对象标识符。
如果您在读取属性时遇到问题,则值得从基础知识/强制性知识开始(-除外property_list):
Object_Identifier BACnetObjectIdentifier-在维护它们的设备中唯一
Object_Type BACnetObjectType
Object_Name字符串-在维护它们的设备中唯一;至少1个字符长且只能打印的字符
x BACnetPropertyIdentifier的Property_List BACnetARRAY
就BACnet标准而言,property_list是强制性的,似乎供应商似乎不支持/实现它(-,而object_list似乎总是可用/填充),即使他们这样做,您也可能不支持/实现它。如果您通过网关设备访问目标(或底层)物理设备,则可以访问它/它可能不会渗透到服务中。