0% found this document useful (0 votes)
189 views65 pages

Trane BACnet Message Structure

The document provides an overview of BACnet message structure and encoding. It describes the basic components of BACnet messages like NPDU structure, message frames, tags, and encoding of primitive application data types. Encoding techniques for different BACnet data types are explained in detail including NULL, BOOLEAN, INTEGER, REAL etc.

Uploaded by

TeeWit Milk
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
189 views65 pages

Trane BACnet Message Structure

The document provides an overview of BACnet message structure and encoding. It describes the basic components of BACnet messages like NPDU structure, message frames, tags, and encoding of primitive application data types. Encoding techniques for different BACnet data types are explained in detail including NULL, BOOLEAN, INTEGER, REAL etc.

Uploaded by

TeeWit Milk
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 65

BACnet Message Structure

David Fisher, PolarSoft Inc.

1996-2009 PolarSoft Inc., All Rights Reserved

Overview
Basic Message Structure
What is a MAC layer?
NPDU Structure

1996-2009 PolarSoft Inc., All Rights Reserved

What is a MAC Layer?


Destination: 112233445566
Length: 12
Data: 00112233445566778899AABB

MAC Layer
messages

1996-2009 PolarSoft Inc., All Rights Reserved

Message Frames
Start of Message

End of Message

Destination

Data
Source
Length

1996-2009 PolarSoft Inc., All Rights Reserved

Error Detection/Correction

MPDUs
Destination: 112233445566
Length: 12
Data: 00112233445566778899AABB

headers
MPDU

1996-2009 PolarSoft Inc., All Rights Reserved

Version
Control

DNET
DLEN
DADR
SNET
SLEN
SADR

Hop Count
Message Type
Vendor ID
NPDU or APDU
1996-2009 PolarSoft Inc., All Rights Reserved

1 octet
1 octet
2 octets
1 octet
M octets
2 octets
1octet
L octets
1 octet

1 octet
1 octet
N octets

Network Layer
Message
Structure

Local APDUs

1996-2009 PolarSoft Inc., All Rights Reserved

Version

1 octet

Control

1 octet

APDU

N octets

Network Layer Messages

1996-2009 PolarSoft Inc., All Rights Reserved

Version

1 octet

Control

1 octet

Message Type

1 octet

NPDU

2 octets

APDU for Remote Network


Version

1 octet

Control

1 octet

DNET

2 octets

DLEN

1 octet

DADR

M octets

Hop Count
APDU
1996-2009 PolarSoft Inc., All Rights Reserved

1 octet
N octets

APDU passing from Router to Router

SADR
Hop Count

1 octet
1 octet
2 octets
1 octet
M octets
2 octets
1octet
L octets
1 octet

APDU

N octets

Version
Control
DNET
DLEN
DADR
SNET
SLEN

1996-2009 PolarSoft Inc., All Rights Reserved

APDU routed from remote network

Version

1 octet

Control

1 octet

SNET

2 octets

SLEN

1 octet

SADR

M octets

APDU

1996-2009 PolarSoft Inc., All Rights Reserved

N octets

NPCI
7

6
0

Version

Control

0
0
0
1
1

0
1
0
1

Normal
Urgent
Critical Equipment
Life Safety

1 = Reply expected

DNET

DLEN
DADR
SNET

1 = Source Routing Included

1 = Dest Routing Included

SLEN

SADR
Hop Count

0 = AL Message
1 = NL Message

1996-2009 PolarSoft Inc., All Rights Reserved

APDU

Questions

1996-2009 PolarSoft Inc., All Rights Reserved

Overview
ASN.1 Bootcamp
What is ASN.1
Encoding Approaches
Tags
Detailed look at encoding ReadProperty

1996-2009 PolarSoft Inc., All Rights Reserved

Abstract Syntax Notation One (ASN.1)

ProductionName ::= KEYWORD {


list of components
}

This is the basic structure of all ASN.1 Productions.


We will examine the KEYWORDs most commonly
used in BACnet to gain a basic understanding of how
to interpret ASN.1
1996-2009 PolarSoft Inc., All Rights Reserved

ASN.1

ProductionName ::= CHOICE {


option1
option2
.
.
.
optionN

1996-2009 PolarSoft Inc., All Rights Reserved

[0] Datatype1,
[1] Datatype2,
[N-1] DatatypeN

ASN.1
BACnet defines 13 primitive or
application datatypes.
0 Null
1 Boolean
2 Unsigned Integer
3 Signed Integer
4 Real
5 Double
6 Octet String

1996-2009 PolarSoft Inc., All Rights Reserved

7
8
9
10
11
12

Character String
Bit String
Enumerated
Date
Time
BACnetObjectIdentifier

ASN.1
ProductionName ::= SEQUENCE {
item1
item2
item3
.
.
.
itemN
}

1996-2009 PolarSoft Inc., All Rights Reserved

[0] Datatype1,
[1] Datatype2 OPTIONAL,
[2] Datatype3,
[N-1] DatatypeN

ASN.1
BACnetDayOfWeek ::= BIT STRING {
monday
tuesday
wednesday
thursday
friday
saturday
sunday
}

1996-2009 PolarSoft Inc., All Rights Reserved

(0),
(1),
(2),
(3),
(4),
(5),
(6)

ASN.1
BACnetEventState ::= ENUMERATED
{
normal
(0),
fault
(1),
offnormal
(2),
high-limit
(3),
low-limit
(4)
}

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Approaches
Fixed position encoding
A map is made that indicates exactly
where each piece of the message is to
appear. There is no variation.
Variable position encoding
The pieces of the message can vary. A
special marker called a tag is used to
indicate which piece comes next and how
big it is.
1996-2009 PolarSoft Inc., All Rights Reserved

Format of the BACnet-Confirmed-Request-PDU


Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
|
PDU Type
|SEG|MOR| SA| 0 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 |
Max Resp
|
|---|---|---|---|---|---|---|---|
|
Invoke ID
|
|---|---|---|---|---|---|---|---|
|
Sequence Number
| Only present if SEG = 1
|---|---|---|---|---|---|---|---|
|
Proposed Window Size
| Only present if SEG = 1
|---|---|---|---|---|---|---|---|
|
Service Choice
|
|---|---|---|---|---|---|---|---|
|
Service Request
|
|
.
|
.
|
.
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

Tags
Bit Number:
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
|
Tag Number
|Class|Length/Value/Type|
|-----|-----|-----|-----|-----|-----|-----|-----|

where
Tag Number = the tag number within the class
Class
= application or context specific
Length/Value/Type = whether the data following the tag
is primitive or constructed and specifies the length
or value of primitive data.

1996-2009 PolarSoft Inc., All Rights Reserved

ReadProperty
client

server
ReadProperty(msg#123
objectid=AnalogInput 5
propertyid=Present_Value)
72

1996-2009 PolarSoft Inc., All Rights Reserved

Read Property Service


Table 15-5.Structure of ReadProperty Service Primitives
Parameter Name
Argument
Object Identifier
Property Identifier
Property Array Index

Req

Ind

M
M
M
U

M(=)
M(=)
M(=)
U(=)

Rsp

Cnf

Parameters for the service

Result (+)
Object Identifier
Property Identifier
Property Array Index
Property Value

S
M
M
U
M

S(=)
M(=)
M(=)
U(=)
M(=)

Result (-)
Error Type

S
M

S(=)
M(=)

M
U
S

mandatory
user option
selection

1996-2009 PolarSoft Inc., All Rights Reserved

We get this if the request succeeds

We get this if the request fails

BACnetPDU

::= CHOICE {

confirmed-requestPDU
[0] BACnetConfirmed-RequestPDU,
unconfirmed-request-PDU [1] BACnet-Unconfirmed-RequestPDU,
simpleACKPDU
[2] BACnetSimpleACKPDU,
complexACKPDU
[3] BACnetComplexACKPDU,
segmentAck-PDU
[4] BACnet-SegmentACK-PDU,
errorPDU
[5] BACnetErrorPDU,
reject-PDU
[6] BACnet-Reject-PDU,
abort-PDU
[7] BACnet-Abort-PDU
}

1996-2009 PolarSoft Inc., All Rights Reserved

--

Context-specific tags 0..10 are NOT used in header encoding

BACnet-Confirmed-Request-PDU
pdu-type
segmented-message
more-follows
segmented-response-accepted
reserved
max-APDU-length-accepted
invokeID
sequence-number
proposed-window-size
service-choice
service-request
}

1996-2009 PolarSoft Inc., All Rights Reserved

::= SEQUENCE {
[0] Unsigned (0..15), -0 for this PDU type
[1] BOOLEAN,
[2] BOOLEAN,
[3] BOOLEAN,
[4] Unsigned (0..31),
[5] Unsigned (0..15),
[6] Unsigned (0..255),
[7] Unsigned (0..255) OPTIONAL,
[8] Unsigned (1..127) OPTIONAL,
[9] BACnetConfirmedServiceChoice,
[10] BACnet-Confirmed-Service-Request
OPTIONAL

BACnetConfirmedServiceChoice ::= ENUMERATED {


.
.
.
-Object Access Services
addListElement
(8),
removeListElement
(9),
createObject
(10),
deleteObject
(11),
readProperty
(12),
readPropertyConditional (13),
readPropertyMultiple
(14),
writeProperty
(15),
writePropertyMultiple
(16),
.
.
.
}
1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-ConfirmedServiceRequest ::= CHOICE {

.
.
.

--

Object Access Services


addListElement
[8] AddListElement-Request,
removeListElement
[9] RemoveListElement-Request,
createObject
[10] CreateObject-Request,
deleteObject
[11] DeleteObject-Request,
readProperty
[12] ReadPropertyRequest,
readPropertyConditional [13] ReadPropertyConditionalRequest,
readPropertyMultiple
[14] ReadPropertyMultiple-Request,
writeProperty
[15] WritePropertyRequest,
writePropertyMultiple
[16] WritePropertyMultipleRequest,

.
.
.

1996-2009 PolarSoft Inc., All Rights Reserved

ReadProperty-Request ::= SEQUENCE {


objectIdentifier
[0]
propertyIdentifier [1]
propertyArrayIndex [2]
---}

1996-2009 PolarSoft Inc., All Rights Reserved

BACnetObjectIdentifier,
BACnetPropertyIdentifier,
Unsigned OPTIONAL
used only with array datatype
if omitted with an array then
the entire array is referenced

Encoded ReadProperty Request

X`00'

Fixed

Variable

X`00'
X`01'
X`0C'

PDU Type=0 (BACnet-Confirmed-RequestPDU, SEG=0, MOR=0, SA=0)


Maximum APDU Size Accepted=50 octets
Invoke ID=1
Service Choice=12 (ReadProperty-Request)

X`0C'
X`00000005'
X`19'
X`55'

SD Context Tag 0 (Object Identifier, L=4)


Analog Input, Instance Number=5
SD Context Tag 1 (Property Identifier, L=1)
85 (PRESENT_VALUE)

1996-2009 PolarSoft Inc., All Rights Reserved

Encoded ReadProperty Request


X`0C'
X`00000005'

SD Context Tag 0 (Object Identifier, L=4)


Analog Input, Instance Number=5

7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
|
Tag Number=0
|Class|Length/Value/Type|
| 0
0
0
0
1
1
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|

Context Tag

objectIdentifier
1996-2009 PolarSoft Inc., All Rights Reserved

[0]

ObjectIdentifiers are
length = 4 octets

BACnetObjectIdentifier,

Encoded ReadProperty Request


X`19'
X`55'

SD Context Tag 1 (Property Identifier, L=1)


85 (PRESENT_VALUE)

7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
|
Tag Number=1
|Class|Length/Value/Type|
| 0
0
0
1
1
0
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|

Context Tag

propertyIdentifier
1996-2009 PolarSoft Inc., All Rights Reserved

[1]

PropertyIdentifiers
are Unsigned, min
length = 1 octet

BACnetPropertyIdentifier,

Questions

1996-2009 PolarSoft Inc., All Rights Reserved

Overview

Encoding Primitive Application Datatypes

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding NULL
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
0
0
0
0
0
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|

NULL = 0

1996-2009 PolarSoft Inc., All Rights Reserved

NULL has no length

Encoding BOOLEAN
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
0
0
1
0
0
0
0/1 |
|-----|-----|-----|-----|-----|-----|-----|-----|

BOOLEAN = 1

Value is 0 or 1

|-----|-----|-----|-----|-----|-----|-----|-----|
| ?
?
?
?
1
0
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
0
0
0
0
0
0
0/1 |
|-----|-----|-----|-----|-----|-----|-----|-----|

Context tagged BOOLEAN values are always followed


by a one octet value

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Unsigned
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
0
1
0
0
001..100
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
1, 2, 3 or 4 octets of big-endian value
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Signed
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
0
1
1
0
001..100
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
1, 2, 3 or 4 octets of big-endian value
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding REAL
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
0
0
0
1
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
4 octets of IEEE real value
|
|
|
|
|
|
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Double
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
0
1
0
1
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
0
0
0
1
0
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
8 octets of IEEE double value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

5 = extended length
extended length = 8

Encoding Octet Strings


Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
1
0
0
001..100
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
1, 2, 3 or 4 octets of octet string value
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Octet Strings


Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
1
0
0
1
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
actual length of octet string 5..253
|
|-----|-----|-----|-----|-----|-----|-----|-----|
~
~
|
octets
|
~
~
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Octet Strings


Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
1
0
0
1
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
1
1
1
1
1
1
1
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
actual length of octet string 254..65535
|
|
big endian 2 octet length
|
|-----|-----|-----|-----|-----|-----|-----|-----|
~
~
|
octets
|
~
~
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Octet Strings


Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
1
0
0
1
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
1
1
1
1
1
1
1
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
actual length of 65536..4294967295
|
|
big endian 4 octet length
|
|
|
|
|
|-----|-----|-----|-----|-----|-----|-----|-----|
~
~
|
octets
|
~
~
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Character Strings


Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 0
1
1
1
0
1
0
1 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
actual length of char string 5..253
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
character set code
|
|-----|-----|-----|-----|-----|-----|-----|-----|
~
~
|
octets
|
~
~
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Character String Example

X`75'
X`06'
X`00'
X`4142434445'

1996-2009 PolarSoft Inc., All Rights Reserved

Character String, extended length


extended length is 6 octets
Character Set is ANSI x3.4
string = ABCDE

Encoding Bit Strings


Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 1
0
0
0
0
001..101
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
number of unused bits 0..7
|
|-----|-----|-----|-----|-----|-----|-----|-----|
~
~
|
octets
|
~
~
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Bit String Example


7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 1
0
1
0
1
0
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|

X`82'
X`03'
X`A8'

1996-2009 PolarSoft Inc., All Rights Reserved

Bit String, length=2


3 unused bits
bit string = B10101

Encoding Enumerations
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 1
0
0
1
0
001..100
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
1, 2, 3 or 4 octets of big-endian value
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Encoding Dates
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 1
0
1
0
0
1
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
year 1900, e.g. 103 = 2003
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
month, 1=January
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
day, e.g. 1..31
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
day of week, 1=Monday, 7=Sunday
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

0xFF = wildcard

Encoding Times
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 1
0
1
1
0
1
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
hours 00..23
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
minutes 00..59
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
seconds 00..59
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
hundredths 00..99
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

0xFF = wildcard

Encoding ObjectIdentifier
Tag Number
Class Length/Value/Type
7
6
5
4
3
2
1
0
|-----|-----|-----|-----|-----|-----|-----|-----|
| 1
1
0
0
0
1
0
0 |
|-----|-----|-----|-----|-----|-----|-----|-----|
|
object type 0..1023
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
object instance 0.. 4194303
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
|
|-----|-----|-----|-----|-----|-----|-----|-----|
|
|
|-----|-----|-----|-----|-----|-----|-----|-----|

1996-2009 PolarSoft Inc., All Rights Reserved

Paired Delimiters
ReadProperty-ACK ::= SEQUENCE {
objectIdentifier
[0]
propertyIdentifier
[1]
propertyArrayIndex [2]
propertyValue
[3]
}

X`0C'
X`00000005'
X`19'
X`55'
X`3E'
X`44'
X`4290999A'
X`3F'

1996-2009 PolarSoft Inc., All Rights Reserved

BACnetObjectIdentifier,
BACnetPropertyIdentifier,
Unsigned OPTIONAL,
ABSTRACT-SYNTAX.&Type

SD Context Tag 0 (Object Identifier, L=4)


Analog Input, Instance Number=5
SD Context Tag 1 (Property Identifier, L=1)
85 (PRESENT_VALUE)
PD Opening Tag 3 (Property Value)
Application Tag 4 (Real, L=4)
72.3
PD Closing Tag 3 (Property Value)

Overview
Detailed look at PDUs
Unconfirmed
Confirmed
Simple ACK
Complex ACK
Error
Reject
Abort
1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-Unconfirmed-Request-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 1 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|
|
Service Choice
|
|---|---|---|---|---|---|---|---|
|
Service Request
|
|
.
|
.
|
.
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-Confirmed-Request-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 0 |SEG|MOR| SA| 0 |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 |
Max Resp
|
|---|---|---|---|---|---|---|---|
|
Invoke ID
|
|---|---|---|---|---|---|---|---|
|
Sequence Number
| Only present if SEG = 1
|---|---|---|---|---|---|---|---|
|
Proposed Window Size
| Only present if SEG = 1
|---|---|---|---|---|---|---|---|
|
Service Choice
|
|---|---|---|---|---|---|---|---|
|
Service Request
|
|
.
|
.
|
.
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-SimpleACK-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 2 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|
|
Original InvokeID
|
|---|---|---|---|---|---|---|---|
|
Service Ack Choice
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-ComplexACK-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 3 |SEG|MOR| 0 | 0 |
|---|---|---|---|---|---|---|---|
|
Original Invoke ID
|
|---|---|---|---|---|---|---|---|
|
Sequence Number
| Only present if SEG = 1
|---|---|---|---|---|---|---|---|
|
Proposed Window Size
| Only present if SEG = 1
|---|---|---|---|---|---|---|---|
|
Service-ACK Choice
|
|---|---|---|---|---|---|---|---|
|
Service ACK
|
|
.
|
.
|
.
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-Error-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 5 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|
|
Original Invoke ID
|
|---|---|---|---|---|---|---|---|
|
Error Choice
|
|---|---|---|---|---|---|---|---|
|
Error
|
|
.
|
.
|
.
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-Reject-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 6 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|
|
Original Invoke ID
|
|---|---|---|---|---|---|---|---|
|
Reject Reason
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

BACnet-Abort-PDU
Bit Number:

7
6
5
4
3
2
1
0
|---|---|---|---|---|---|---|---|
| PDU Type = 7 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|---|
|
Original Invoke ID
|
|---|---|---|---|---|---|---|---|
|
Abort Reason
|
|---|---|---|---|---|---|---|---|

1996-2009 PolarSoft Inc., All Rights Reserved

ReadProperty
client

server
ReadProperty(msg#123
objectid=AnalogInput 29
propertyid=Present_Value)
72

ReadPropertyAck(msg#123
objectid=AnalogInput 29
propertyid=Present_Value
value=72.0)

or

1996-2009 PolarSoft Inc., All Rights Reserved

Error(msg#123
class=object
code=NoSuchObject)

ReadProperty
client

server
ReadProperty Confirmed
Service Request

72

ReadProperty ComplexACK

or

1996-2009 PolarSoft Inc., All Rights Reserved

Error

Questions

1996-2009 PolarSoft Inc., All Rights Reserved

You might also like