Author Archive for pchipkin

BACnet MSTP on a Delta DFM-200 Field Module

This device supports two protocols. One is BACnet MS/TP and the other is LinkNet (Delta’s own protocol).

When the product is shipped the internal jumper is set to LinkNet. Despite this BACnet MSTP is active and if you connect a MSTP client you can read and write the BACnet objects. What you cant do until you change the jumper is discover the device. It appears the only effect of the jumper is to enable the reply to a who-is.

Did you know that with the CAS BACnet Explorer you can add a device manually and then discover its objects and properties. Using this feature the DFM-200 was ‘discovered’ even with the protocol selection jumper in the wrong position.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Chipkin – BACnet Vendor ID

ASHRAE has allocated Chipkin Automation Systems Inc a ASHRAE Vendor ID of 389.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Unpacking Bits from a 16bit Register in a FieldServer Configuration

Introduction

What happens if you want to serve some/all of the bits that form a 16 bit register. ie. Your client reads a 16bit register but you want to serve those bits as separate binary objects.

Here is an example

Lets say the client reads 40001 data into DA_REG[0] (Data Array = DA_REG Offset=0)

The 1st Move copies 1x 16 bit number from DA_REG[0] to DA_PACKED[0].

DA_Packed’s offsets can be interpreted in two ways:

  • A series of 16 bit numbers
  • A series of bits

It depends on what kind of operation access the Data Array. If it’s a 16 bit or analog number type operation then it addesses 16 bit numbers. If the operation is a bit operation like for a binary data point then the operation addresses each bit.

Therefore DA_PACKED[0] is ambiguous.

If you connected a server Map Descriptor to that point and the type is an Analog In/output then it means the 16bit number found at DA_PACKED[0].

If you connected a server Map Descriptor to that point and the type is an Binary In/output then it means the bit number found at DA_PACKED[0] and DA_PACKED[15] is the 16th bit. DA_PACKED[16] is the 1st bit of the next 16 bit number…

If that seems to complicated then add one more move:

Data_Arrays

Move_Only DA_PACKED 0 DA_BIT 0 16

This move moves the 16 bits for DA_PACKED[0] to 16 separate bits with unambiguous offsets and you can use those in the server map descriptors.

Heads Up

Some Modbus server devices number the bits in reverse order. You can only be sure when you test.
Data_Arrays
Data_Array_Name Data_Format Data_Array_Length
DA_REG UINT16 20
DA_PACKED Packed_Bit 100
DA_BIT BIT 1200

Preloads

Data_Array_Name Preload_Data_Index Preload_Data_Value
DA_REG 0 33

Moves

Function Source_Data_Array Source_Offset Target_Data_Array Target_Offset Length
Move_Only DA_REG 0 DA_PACKED 0 1
Move_Only DA_PACKED 0 DA_BIT 0 16
Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

RS485 Networks – Multiple Protocols

RS485 defines the physical layer of the network. You may use it as you want. However, since the trunk is shared it is important that no two (or more) devices talk at the same time. If they do this will produce collisions and the corruption of both messages.

The following applies for both half and full duplex RS485.

You can have any number of protocols on the same 485 trunk provided that two or more devices do not talk at the same time.
The consequences of this statement are
1. You can only use more than one protocol if they are poll/response type protocols like Modbus Rtu or Rockwell DF1.
2. If you have a token passing protocol (such as Bacnet mstp) you cannot use another protocol on the same trunk
3. Only one device can be the master for the multiple protocols. The reason is that the master decides when to poll and how long to wait for a response.

Thus, If you have full control over one rs485 port you could use that port to send a poll using protocol#1, wait for a response and then send a poll using protocol#2. If you do not have full control (ie. You are letting two applications which are not co-ordinated share the port) then you cannot run two protocols.

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Converting Modbus 16 bit numbers to 32 bit numbers

Often the Vendor documentation does not report the byte order in which registers are served or the order in which words must be combined to form 32 bit numbers. For this reason FieldServer provides 4 functions to convert Modbus 16 bit numbers to 32 bit numbers.

2.i16-1.i32

2.i16-1.i32-s

2.i16-1.i32-sw

2.i16-1.i32-sb

Each of these functions takes 2x 16 bits numbers to form a 32 bit number. Each processes the bytes in a different order.

Practical Tip: The easiest way to determine which function to use is to experiment. Look at the values in the FieldServer Data Arrays. If the values are obviously wrong try the other move functions. (Don’t forget that some numbers may be scaled so the number you see in the Data Array may 10x or 100x too big / small).

Example:

In the move below if

DA_B01_REG[21] == 1 and

DA_B01_REG[22] == 2

Then

DA_B01_INT32[21] == 131073

Explanation

1 + 65536* 2 = 131073

Or In Hexadecimal

0×0001 + 0×0002 * 0×10000 = 0×20001

Moves

Source_Data_Array ,Source_Offset ,Target_Data_Array ,Target_Offset ,Length ,Function

DA_B01_REG ,21 ,DA_B01_INT32 ,21 ,2 ,2.i16-1.i32

By the way, the length is 2 because the move must process two values from the source.

Example:

DA_B01_REG[21] == 1 and

DA_B01_REG[22] == 2

Function In Use Value found in DA_B01_INT32[21]
2.i16-1.i32 131073
2.i16-1.i32s 16777728
2.i16-1.i32-sw 65538
2.i16-1.i32-sb 33554688

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Reducing latency on com ports

When a BYTE is sent from a serial device (BACnet MSTP thermostat) to a USB to 232/485 converters (USB-COMI-SI-M) it is cached on the USB converter until one of two things happened.

  • Transfer size – More then x BYTES are collected or
  • Latency timer – More then n Milliseconds (ms) expirer.

By default most ‘off the self’ USB to serial converters have a latency timer of 50ms and a transfer size of 4096 BYTES

The can be a major problem for PC utilities monitoring a serial network. The PC doesn’t get the BYTES fast enough to respond to the serial device before it times out.

For example:

On a network with a BACnet MSTP thermostat and a RS485 to USB converter connected to a PC. The BACnet MSTP thermostat will send a poll to the PC and will expect the PC to respond within 100ms. If the thermostat does not receive a response within this time the thermostat will assume that the device has gone offline. When the USB to 458 converter receives the message it will stay in its buffers for 50ms before being sent to the PC. Depending on the message it may take longer then 50 ms for the PC to respond to the poll and the thermostat will consider the PC offline.

Luckily we can set the Transfer size, and latency timer.

Most USB to 485 devices that I have used have the ability to set the transfer size and the latency timer.

  1. Start menu–> Settings –> Control panel –> device manager –> Ports (COM & LPT) –>{Select your USB to RS485 converter}
  2. Right click and select “Properties
  3. Select the “Port Settings” tab
  4. Click the “Advanced” button advancedsettingsforcomm10
  5. Change the Latency Timer (mSec) to 1 or the lowest possible setting.
  6. Change the USB Transfer sizes to 64 or the lowest possible settings
  7. Save and close.
Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

BACnet BIBB’s

The implementation of BACnet is under-the-hood. It is invisible to most of us users. We don’t know what services are supported and nor do we know when each service is used. If we don’t know then how can we tell, for example, whether a controller and field device such as a thermostat can interact.

The question is: How do you match requirements of a project to the capabilities of the devices being installed ? The Answer – in BACnet – is BIBBS.

A BIBB is a Bacnet Interoperability Building Block.

Continuing with our example: Say your controller needs to read the set point on a thermostat to perform its control. Then the controller needs to support a BIBB called DS-RP-A. This isn’t enough. The thermostat must be able to respond so it needs to support a BIBB called DS-RP-B. DS stands for Data Sharing. RP stands for Read Property. The A and the B stand for Client (A) and Server (B).

The outdoor temperature on a HVAC controller could come from two places. A local sensor connected to the unit or a remote value sent via BACnet. In this case you would want to match the BAS controller and HVAC controller with BIBBS DS-WP-A and DS-WP-B (DataSharing-WriteProperty-A or B for Client and Server).

Thus, if you buy a great controller that supports Conditional and Range Reads you would want to buy field devices that support these services. DS-RPC-A/B for DataSharing-ReadPropertyConditional-Client/Server.

Abbreviation BIBB Category
DS        Data Sharing
AE        Alarm and Event Management
DM       Device Management
DM and NM are part of the same category.
NM       Network Management
T          Trend
SCHED Schedule

TIP : Device A and Device B. All the BIBBs end in ‘-A’ or ‘-B’. BACnet refers to the A device and the B device. The A device in this context is a device acting as a client. The B device means a device acting as a server. In BACnet devices can be both clients and servers since almost all devices can read data from each other.

A complete table of BIIB’s is available at: http://www.chipkin.com/articles/bacnet-bibbs-table-bacnet-interoperability-building-blocks

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

BACnet BIBB’s TABLE – Bacnet Interoperability Building Blocks

Notes on BIBB’s are provided here: http://www.chipkin.com/articles/bacnet-bibbs

AE-ACK-A Alarm and Event Notification – Acknowledgement
Alarm and Event Management
A client sends an acknowledgement after receiving an Alarm or Event notification that requires one.
Service Initiate Execute
AcknowledgeAlarm Yes No
AE-ACK-B Alarm and Event Notification – Acknowledgement
Alarm and Event Management
A server processes an alarm or event notification
Service Initiate Execute
AcknowledgeAlarm No Yes
AE-ASUM-A Alarm and Event – Alarm Summary
Alarm and Event Management
A client polls for a summary
Service Initiate Execute
GetAlarmSummary Yes No
AE-ASUM-B Alarm and Event – Alarm Summary
Alarm and Event Management
Server sends an alarm summary
Service Initiate Execute
GetAlarmSummary No Yes
AE-ESUM-A Alarm and Event – Enrolment Summary
Alarm and Event Management
Client wants a summary of event initiating objects. Selection criteria may be specified in the request.
Service Initiate Execute
GetEnrollmentSummary No Yes
AE-ESUM-B Alarm and Event – Enrolment Summary
Alarm and Event Management
Server sends a list of selected objects that are event initiating. Selectionis based on the requesting criteria.
Service Initiate Execute
GetEnrollmentSummary Yes No
AE-INFO-A Alarm and Event – Information
Alarm and Event Management
The GetEventInformation service is used by a client BACnet-user to obtain a summary of all “active event states”. The term
“active event states” refers to all event-initiating objects that
(a) have an Event_State property whose value is not equal to NORMAL, or
(b) have an Acked_Transitions property, which has at least one of the bits (TO-OFFNORMAL, TO-FAULT, TONORMAL)
set to FALSE.
Service Initiate Execute
GetEventInformation Yes No
AE-INFO-B Alarm and Event – Information
Alarm and Event Management
Server sends a summary of all active event states
“active event states” refers to all event-initiating objects that
(a) have an Event_State property whose value is not equal to NORMAL, or
(b) have an Acked_Transitions property, which has at least one of the bits (TO-OFFNORMAL, TO-FAULT, TONORMAL)
set to FALSE.
Service Initiate Execute
GetEventInformation No Yes
AE-LS-A Alarm and Event – Life Saftey
Alarm and Event Management
A client devices as a life saftety device is able to process and acknowldege notifications it receives about life safty events. The Client
sends a reset, silence or unsilence message. Is intended for fire and life safety systems.
Service Initiate Execute
LifeSafetyOperation Yes No
AE-LS-B Alarm and Event – Life Saftey
Alarm and Event Management
A device as a server and as a life saftey device sends notifications about life safety events. Server performs the reset or silence
Service Initiate Execute
LifeSafetyOperation No Yes
AE-N-A Alarm and Event Notification
Alarm and Event Management
A Client can process notifications about alarms and other events from any standard or proprietary eventgenerating
object of any standard or proprietary event type.
Service Initiate Execute
UnConfirmedEventNotification No Yes
ConfirmedEventNotification No Yes
AE-N-E-B Alarm and Event Notification – External Device
Alarm and Event Management
Server device sends notifications about alarms and other events in another device. At least one event enrolment object mustbe
supported and DS_RP-A and AE-N-I-B must be supported. If the notifications require acknowldgement then the server must be capable
of processing the acknowledgdments by supporting AE-ACK-B
object of any standard or proprietary event type.
Service Initiate Execute
AE-N-I-B Alarm and Event Notification – Internal
Alarm and Event Management
Server device sends notifications about alarms and other events. The server must support Intrinsic or Algorihmic reporting. If the
notifications require acknowldgement then the server must be capable of processing the acknowledgdments by supporting AE-ACK-B
object of any standard or proprietary event type.
Service Initiate Execute
ConfirmedEventNotification Yes No
UnconfirmedEventNotification Yes No
DS-COV-A Change of Value
Data Sharing
Client can subscribe for COV notification and can process the notifications from the remote device.Support for subscriptions of a
limited lifetime is required, and support for subscriptions of indefinite lifetime is optional. This service has two important differences
from the SubscriveCOVProperty service. Firstly, there is a limited set of properties (For the most part, Present_Value and Status_Flags)
it may subscribe to and secondly the COVIncrement is not part of the subscription – the notifications are based on how the server is
Service Initiate Execute
UnconfirmedCOVNotification No Yes
SubscribeCOV Yes No
ConfirmedCOVNotification No Yes
DS-COV-B Change of Value
Data Sharing
Server can accept subscriptions and send COV notifications to the remote device. Requires support for a minimum of five concurrent
subscriptions. Support for
subscriptions of a limited lifetime is required, and support for subscriptions of indefinite lifetime is optional.
Service Initiate Execute
ConfirmedCOVNotification Yes No
UnconfirmedCOVNotification Yes No
SubscribeCOV No Yes
DS-COVP-A Change of Value – Property
Data Sharing
Client can subscribe for COV notification of one/more properties of a single object and can process the notifications from the remote
device.Support for subscriptions of a limited lifetime is required, and support for subscriptions of indefinite lifetime is optional. This
service allows the COVIncrement to be specified and range of subscribable properties is larger than DS-COV-A
Service Initiate Execute
SubscribeCOV Yes No
ConfirmedCOVNotification No Yes
UnconfirmedCOVNotification No Yes
DS-COVP-B Change of Value – Property
Data Sharing
Server can accept subscriptions and send COV notifications Requires support for a minimum of five concurrent subscriptions. Support
for subscriptions of a limited lifetime is required, and support for subscriptions of indefinite lifetime is optional.
Service Initiate Execute
ConfirmedCOVNotification Yes No
UnconfirmedCOVNotification Yes No
SubscribeCOV No Yes
DS-COVU-A Unsolicited COV
Data Sharing
Client can process unsolicited COV messages from a Server.
Service Initiate Execute
UnconfirmedCOVNotification No Yes
DS-COVU-B Unsolicited COV
Data Sharing
Server can send unsolicited COV messages to a remote client.
Service Initiate Execute
UnconfirmedCOVNotification Yes No
DS-RP-A Read Property
Data Sharing
Client Polls for Data from remote device
Service Initiate Execute
ReadProperty Yes No
DS-RP-B Read Property
Data Sharing
Server responds to poll
Service Initiate Execute
ReadProperty No Yes
DS-RPC-A Read Property Conditional
Data Sharing
Client polls for data from one/more properties from one/more objects. Selection is based on criteria specified.
Service Initiate Execute
ReadPropertyConditional Yes No
DS-RPC-B Read Property Conditional
Data Sharing
Server responds conditionally sending selected properties from selected objects based on conditional criteria.
Service Initiate Execute
ReadPropertyConditional Yes No
DS-RPM-A Read Property Multiple
Data Sharing
Client Polls for Data from remote device
Service Initiate Execute
ReadPropertyMultiple Yes No
DS-RPM-B Read Property Multiple
Data Sharing
Server responds to poll
Service Initiate Execute
ReadPropertyMultiple No Yes
DS-WP-A Write Property
Data Sharing
Client sets the value of a property of a single object in the server device.
Service Initiate Execute
WriteProperty Yes No
DS-WP-B Write Property
Data Sharing
Server allows a value to be changed by a remote client.
Service Initiate Execute
WriteProperty No Yes
DS-WPM-A Write Property Multiple
Data Sharing
Client sets the value of a one/more properties of a single object in the server device. This is different from ReadPropertyMultiple which
can process properties more than one object.
Service Initiate Execute
WritePropertyMutiple Yes No
DS-WPM-B Write Property Multiple
Data Sharing
Server allows the values of one/more properties to be set by a remote client.
Service Initiate Execute
WritePropertyMutiple No Yes
DM-BR-A Backup and Restore
Device and Network
Client reads the files that contain the configuration of the B device and writes those files to the B device should it
need to be restored to its previously backed-up state.
Service Initiate Execute
ReinitializeDevice Yes No
CreateObject Yes No
AtomicReadFile Yes No
AtomicWriteFile Yes No
DM-BR-B Backup and Restore
Device and Network
Server sends it’s cofiguration to a remote client and allows a remote device to restore it by accepting a configuration and allowing a
Service Initiate Execute
CreateObject No Yes
ReinitializeDevice No Yes
AtomicWriteFile No Yes
AtomicReadFile No Yes
DM-DCC-A Commication Control
Device and Network
The DeviceCommunicationControl service is used by a client BACnet-user to instruct a remote device to stop initiating and
optionally stop responding to all APDUs (except DeviceCommunicationControl or, if supported, ReinitializeDevice) on the
communication network or internetwork for a specified duration of time. This service is primarily used by a human operator
for diagnostic purposes.
Service Initiate Execute
DeviceCommunicationControl Yes No
DM-DCC-B Commication Control
Device and Network
The controlled device responds to the request.
Service Initiate Execute
DeviceCommunicationControl No Yes
DM-DDB-A Dynamic Device Binding
Device and Network
A client can send discovery messages as well as process discovery anouncements send by other devices
Service Initiate Execute
Who-Is Yes No
I-Am No Yes
DM-DDB-B Dynamic Device Binding
Device and Network
A server can process discovery requests and can accounce itself.
Service Initiate Execute
Who-Is No Yes
I-Am Yes No
DM-DOB-B Dynamic Object Binding
Device and Network
Client polls to see which devices contain an object specified by Name or Object Identifier
Service Initiate Execute
I-Have Yes No
Who-Has No Yes
I-Have Yes No
Who-Has No Yes
DM-LM-A List Manipulation
Device and Network
Many BACnet object types have properties that are lists of a particular datatype. The Client can add and remove list
elements in properties of objects in the Server
Service Initiate Execute
AddListElement Yes No
RemoveListElement Yes No
DM-LM-B List Manipulation
Device and Network
The Server device removes/add the items the client requested to be changed in the list
Service Initiate Execute
RemoveListElement No Yes
AddListElement No Yes
DM-OCD-A Object Creation and Deletion
Device and Network
A client requests a server device to create / delete an object. Only applies to the Object Types supported on the server. Check the server
device PICS statememnt as it shoud contain a list of the types which can be dynamicallly manipulated.
Service Initiate Execute
CreateObject Yes No
DeleteObject Yes No
DM-OCD-B Object Creation and Deletion
Device and Network
A server device processes the request to add / delete objects on the fly.
Service Initiate Execute
CreateObject No Yes
DeleteObject No Yes
DM-PT-A Private Transfer
Device and Network
Client sends non-BACNet data to a remote device.
Service Initiate Execute
ConfirmedPrivateTransfer Yes No
UnconfirmedPrivateTransfer Yes No
DM-PT-B Private Transfer
Device and Network
The Recipient of the non-BACNet data, processes the data.
Service Initiate Execute
UnconfirmedPrivateTransfer No Yes
ConfirmedPrivateTransfer No Yes
DM-R-A Restart
Device and Network
When devices restart they can send notifications of this event. Support for this BIBB means the device can process these notifications
Service Initiate Execute
UnconfirmedCOVNotification No Yes
DM-R-B Restart
Device and Network
When a device restarts it can send notifications of this event.
Service Initiate Execute
UnconfirmedCOVNotification Yes No
DM-RD-A Reinitialize
Device and Network
Client requests a device to reinitialize
Service Initiate Execute
ReinitializeDevice Yes No
DM-RD-B Reinitialize
Device and Network
Server device performs the reinitialization
Service Initiate Execute
ReinitializeDevice No Yes
DM-TM-A Text Message
Device and Network
Client sends text data to a remote device. The device must support at least one of the services.
Service Initiate Execute
UnconfirmedTextMessage Yes No
ConfirmedTextMessage Yes No
DM-TM-B Text Message
Device and Network
The Recipient of the Text data, processes the data.
Service Initiate Execute
UnconfirmedTextMessage No Yes
ConfirmedTextMessage No Yes
DM-TS-A Time Synch – Local Time
Device and Network
Client sends a time synch message. The TimeSynchronization service is used by a requesting BACnet-user to notify a remote device of
the correct current time.
This service may be broadcast, multicast, or addressed to a single recipient. Its purpose is to notify recipients of the correct
current time so that devices may synchronize their internal clocks with one another.
Service Initiate Execute
TimeSynchronization Yes No
DM-TS-B Time Synch – Local Time
Device and Network
The server device applies the time synch. Its device object must support the Local_Time and Local_Date properties.
Service Initiate Execute
TimeSynchronization No Yes
DM-UTC-A Time Synch – Coordinated Universal Time
Device and Network
Client sends a time synch message. The TimeSynchronization service is used by a requesting BACnet-user to notify a remote device of
the correct current time.
This service may be broadcast, multicast, or addressed to a single recipient. Its purpose is to notify recipients of the correct
current time so that devices may synchronize their internal clocks with one another.
Service Initiate Execute
UTCTimeSynchronization Yes No
DM-UTC-B Time Synch – Coordinated Universal Time
Device and Network
The server device applies the time synch. Its device object must support the Local_Time , Local_Date, UTC_Offset …properties.
Service Initiate Execute
UTCTimeSynchronization No Yes
DM-VT-A Virtual Terminal
Device and Network
A client opens and conducts a Virtual Terminal session with a remote device.
Service Initiate Execute
VT-Close Yes Yes
VT-Data Yes Yes
VT-Open Yes No
DM-VT-B Virtual Terminal
Device and Network
A server devices allows a Virtual Terminal sessions to be opended and exchanges data with the remote client.
Service Initiate Execute
VT-Open No Yes
VT-Data Yes Yes
VT-Close Yes Yes
NM-CE-A Connection Establishment
Network Management
A device sends a command to a half-router to establish/terminate connections
Service Initiate Execute
Establish-Connection-To-Network Yes No
Disconnect-Connection-To-Network Yes No
NM-CE-B Connection Establishment
Network Management
A half-router processes commands to establish/terminate connections
Service Initiate Execute
Disconnect-Connection-To-Network No Yes
Establish-Connection-To-Network No Yes
NM-RC-A Router Configuration
Network Management
Client sends messages to configure or query a router or half-router
Service Initiate Execute
Initialize-Routing-Table-Ack No Yes
Initialize-Routing-Table Yes No
Who-Is-Router-To-Network Yes No
I-Am-Router-To-Network No Yes
I-Could-Be-Router-To-Network No Yes
NM-RC-B Router Configuration
Network Management
A router or half-router acts on configuration commands or responds to queries about the configuration.
Service Initiate Execute
Who-Is-Router-To-Network Yes Yes
Initialize-Routing-Table No Yes
Initialize-Routing-Table-Ack Yes No
I-Am-Router-To-Network Yes Yes
SCHED-A Scheduling
Scheduling
A client manipulates schedules and calandars in a server device. To do this the client musts support these two BIBBs DS-RP-A and DS-
Service Initiate Execute
SCHED-E-B Scheduling-External
Scheduling
Allows time and date scheduling of specific objects in other devices. To support SCHED-E-B the device must also required to support
SCHED-I-B and DS-WP
Service Initiate Execute
SCHED-I-B Scheduling-Internal
Scheduling
A device as a server has objects and properties that can be scheduled by date and time. The device supports at least one calandar and
one schedule object (must support at least 6 entries per day). This device must also support DM-TS-B and/or DM-UTC-B to claim support
Service Initiate Execute
T-ATR-A Automated Trend Retrieval
Trending
A device as a client can respond to notifications that a trend log is ready and reads the new data from the server.
Service Initiate Execute
ConfirmedEventNotification No Yes
ReadRange Yes No
T-ATR-B Automated Trend Retrieval
Trending
When a trend log has aquired a preset number of records the device (as a server) sends notification to a client device.
Service Initiate Execute
ConfirmedEventNotification Yes No
ReadRange No Yes
T-VMT-A Viewing and Modifying Trends
Trending
A client can display Trend Data obtained from the server device and can maipulate parameters in the remote server device that control
Service Initiate Execute
ReadRange Yes No
T-VMT-E-B Viewing and Modifying Trends External
Trending
The device as a server can collect trend log data from an external device and store these records internally. The device must also
support T-VMT-I-B and DS-RP-A.
Service Initiate Execute
T-VMT-I-B Viewing and Modifying Trends Internal
Trending
The device as a server can collect trend log data records and store them internally. Support for at least one Trend Log Object is provided.
Service Initiate Execute
ReadRange No Yes
Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Why 7 data bits is no good for Modbus RTU

Modbus RTU is a binary protocol. It requires the use of all 8 bits in each character / byte that forms the message because there are many situations where the 8th bit is used. For example, an exception response has the 8th (most significant bit set. If you wanted to read holding register 40130 then the message contains the offset. In this case the offset is 129 (The distance from 40001). The number 129 requires 8 bits of storage. In fact all numbers greater than 127 require the 8th bit.  These are just two example of why 8 data bits are required to send RTU messages. It is concievable that a device could which supports less than 128 registers which will never have a value larger than 128 stored in any register could use 7 data bits but the message contains a checksum which might require the use of the 8th bit and this is why 7 data bits is never used for Modbus RTU. In fact you cant use 7 data bits for any binary protocol.

Example: Read 40130 length 31 from device 11.

[01]               [03]              [00]             [81]               [00]             [1f]               [54]               [2a] (Hex Values)

[0000 0001] [0000 0011] [0000 0000] [1000 0001] [0000 0000] [0001 1111] [0101 1000] [0010 1010]

Modbus Ascii (JBUS) is an ASCII protocol. Every character in the message is encoded in ASCII characters and ANSI ASCII character set only require 7 data bits to be encoded since the max value of an ASCII characters is 127. These days the set has been extended and contains non-human readable characters numbered from 128-255.

The same message sent in Jbus sends this string of human readable characters.

“01030081001f542a”

Keywords for this article: 8 Data_Bits

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have

Cable Specifications for RS485 Networks – BACnet MSTP

The BACnet spec defined the media for MSTP as follows (2004) ;

“An MS/TP EIA-485 network shall use shielded, twisted-pair cable with characteristic impedance between 100 and 130 ohms. Distributed capacitance between conductors shall be less than 100 pF per meter (30 pF per foot). Distributed capacitance between conductors and shield shall be less that 200 pF per meter (60 pF per foot). Foil or braided shields are acceptable. The maximum recommended length of an MS/TP segment is 1200 meters (4000 feet) with AWG 18 (0.82 mm2 conductor area) cable. The use of greater distances and/or different wire gauges shall comply with the electrical specifications of EIA-485.”

Did you like this post?

Subscribe To The RSS Feed!
To catch many more articles like this in the future, make it easy on yourself and subscribe to me via RSS. You will not regret it!

Do you have a question?
We will do our best to try and solve any building automation, protocol, integration problem you may have