|MORECHEMISTRY.COM::MORE CHEMISTRY ON THE WEB|
LabVIEW drivers - Bronkhorst FLOW-BUS protocol
The FLOWBUS protocol explained
Understanding a protocol isn't allways easy. The FLOWBUS (or FLOW-BUS) surely is such a protocol.
The principle of the FLOWBUS protocol is quite easy:
The underlaying communication principle is even simpler:
Any command or response has the following structure:
The actual command string depends on the chosen protocol:
RS232 ASCII protocol
All elements in the abovementioned structure are bytes coded as 2 ASCII character representing the hexadecimal value of the byte, e.g. a byte value of 148, which is 0x94, would convert to '94'. This implies the real length is allways twice the number of bytes occupied by the node address and the coded message.
All commands and responses are preceeded by ':' and terminated by '[CR][LF]'.
Enhanced binary protocol
All commands and responses are preceeded by '[DLE][STX]' and a byte representing the "message sequence number". All commands and responses are terminated by '[DLE][ETX]'.
Any data byte that contains 0x10, or rather [DLE], must be followed by an additional 0x10 to distinguish it from the [DLE] at the start of a message.
Although the principle communication is quite simple the actual command structure is quite complex. This section explains some of the commands which are given in the instruction manual 'RS232 interface with FLOW-BUS protocol for digital multibus Mass Flow / Pressure instruments' (doc. 9.17.027Q).
These are the control commands for RS232 communication, using the RS232 ASCII protocol, required to write controller setpoints and to read process values.
N.B. All commands are followed by a carriage return and linefeed character.
Each command starts with the node address. For actual devices the node address may range from 3 to 127. Addresses 0 and 1 are for the interface.
The actual message starts with a communication command. There are 10 different communication commands of which the most common ones, "status message" (0x00), "send parameter" (0x01 or 0x02) and "request parameter" (0x04) will be used in the following examples.
What follows after the communication command depends on the actual command and whether commands are chained or not. The technique of chaining commands will not be explained in the following examples and hence all samples are for non chained commands.
The bytes that follow the communication command can be a single value or can be a constructed value from 2 or 3 contributing values, e.g. chained?, data type and data value. The actual device parameters are divided into processes, each with a number of values. The data type of the values depends on the parameter and can be one of the following: Character (or Byte) (U8), Integer (U16), Long (U32), Float (SGL) or String (STR).
#### Initialisation RS232 interface
The instruction manuals provided by Bronkhorst (doc. 9.17.027Q and doc. 9.17.023V) are quite complete. Some information is either unavailable (e.g. list of init/reset codes) or obscured (e.g. process 1 is not explicitely named in the parameter properties table).
Therefore any driver based solely on these manuals is somewhat incomplete.
Bart Boshuizen, 2012/08/21