Skip to main content

7. Field Bus Interface

7.1 Modbus TCP​

7.1.1 General information for operating with Modbus TCP​

The BactoSense can be operated via the Modbus Transmission Control Protocol (TCP). The following requirements must be met:

  • The computer and/or the management or control system must be compatible with Modbus TCP.
  • The computer and/or the management or control system must have software that can properly process the data provided by the BactoSense.
  • The BactoSense must have the Modbus TCP service activated under Home → Settings → System settings → System services.
  • The BactoSense must be connected to the bus system.
  • To be able to work with the Modbus TCP, the network settings must be set correctly.

Additional information

  • The Modbus TCP interface is integrated by default in the BactoSense.
  • The Ethernet socket is located at the right-hand side of the instrument.
  • The address table necessary for programming can be found in the Modbus TCP address list.
  • All registers are encoded big-endian.
  • Modbus TCP communication runs on port 502.
  • The error code lists can be found in Non-critical errors and Critical errors.
  • Modbus TCP can be used for time synchronisation. Follow the instructions in Set NTP Servers and select Modbus TCP as a sync source.

7.1.2 Address list on Modbus TCP:​

The following values can be read with Modbus function 3 or 4 and written with Modbus function 16.

REGISTER
NO

ADDRESS
(OFFSET)

DATA TYPE

FUNCTION

VALUES

300201
400201

0x00C8

Unsigned
integer bits
0-15

Digital
Inputs.
Ignored
unless
“Modbus
TCP” is
selected as
source in
Digital
Inputs
settings
screen.

Bit 0: Input 1
Bit 1: Input 2
Bit 2: Input 3
Bit 3: Input 4
For correct bit to input
mapping, refer to Digital inputs configuration and PLC mode, in particular table 6-2
and figure 6-5.
Input 1111 = 15 means
abort.

300202
400202

0x00C9

Unsigned
integer bits
0-15

Power
control

Bit 0: Power off
Bit 1: Reboot

300203
400203

0x00CA

Uint16

Watchdog

Write setpoint in seconds to
activate or reset countdown.
After the value is written, a
countdown decrements it by
1 every second.
During countdown, reading
the register returns the
setpoint.
If countdown reaches 0, any
ongoing protocol is aborted.
Reading the register returns
0
Write 0 to disable
countdown.

300204
400204

0x00CB

Uint16

Test
register

Write 1 to display a message
on DI source page of GUI.
Resets to 0 at startup.

300211
400211

0x00D2

UInt16: Year

Get/Set
Date and
Time.
Time is
changed as
soon as
write is
finished.
Only the
fields
where
registers
were
written are
changed: if
only month
is written,
only the
month is
updated.

[0,9999]

300212
400212

0x00D3

UInt16:
Month

[1,12]

300213
400213

0x00D4

UInt16: Day

[0,31]

300214
400214

0x00D5

UInt16: Hour

[0,24]

300215
400215

0x00D6

UInt16:
Minute

[0,59]

300216
400216

0x00D7

UInt16:
Second

[0,59]

The following values can be read with Modbus function 3 or 4.

300001
400001

0x0000

UInt16
(individual bits)

Digital
Outputs

Bit 0: Output 1
Bit 1: Output 2
Bit 2: Output 3
Bit 3: Output 4
For correct bit to output
mapping, refer to Digital output configuration, or use the output
test interface as described
in Digital and analogue output testing.

300002
400002

0x0001

UInt16
(individual bits)

Instrument
Status
0 = No
1 = Yes

Bit 0: Process running
Bit 1: Critical Error
Bit 2: Non-critical error
Bit 3: PLC mode active
Bit 4: Rapid heating (in
winter mode)
Bit 5: Background heating
(winter mode)
Bit 6: Sampling device in
use

300003
400003

0x0002

UInt16
(individual bits)

Alarm status, i.e., alarms raised during the last measurement.

Bit 0: Alarm 1
Bit 1: Alarm 2
Bit 2: Alarm 3
…

300004
400004

0x0003

UInt32 MSB
(individual bits)

Warning status, i.e., warnings raised during the last measurement.

Bit 0: Warning W01
Bit 1: Warning W02
...
Bit 31: Warning W32

300005
400005

0x0004

UInt32 LSB
(individual bits)

300006
400006

0x0005

UInt16

Error code

See error code list. Note:
E00 (unhandled software
error) is renamed to 999
to avoid confusion with
"no error". Non-critical
error codes remain until
either cleared
automatically by a
successful protocol or
cleared manually.

300007
400007

0x0006

UInt16

Heartbeat

Seconds of the clock. The
value changes every
second, use this to
monitor responsiveness of
the system.

300008
400008

0x0007

UInt16

Measuremen
t stage

IDLE 0
INITIALIZING 1
HEATING 2
FILLING 3
PRIMING 4
MIXING 5
INCUBATING 6
ANALYZING 7
CLEANING 8
FLUSHING 9
PROCESSING 10
VALIDATING 11
MOVING 12
EJECTING 13
EXPORTING 14
RENAMING 15
DELETING 16
SAVING 17
SELFCHECK 18
ABORTED 19
UNKNOWN 98
ERROR 99

300011
400011

0x000A

UInt16

Measuremen
t Progress

[0, 100]
0 .. 100 %

300012
400012

0x000B

Float 32 MSB

Temperature
of IO board

Celsius

300013
400013

0x000C

Float 32 LSB

300014
400014

0x000D

UInt16

Humidity at
IO board

[0, 100]
0 .. 100 %

300015
400015

0x000E

UInt16: Year

Date and time of last sampling

300016
400016

0x000F

UInt16: Month

300017
400017

0x0010

UInt16: Day

300018
400018

0x0011

UInt16: Hour

300019
400019

0x0012

UInt16: Minute

300020
400020

0x0013

UInt16: Second

300021
400021

0x0014

UInt16

Cartridge
percentage

[0, 100]
0 .. 100 %

300022
400022

0x0015

UInt32 MSB

Cartridge
serial no

300023
400023

0x0016

UInt32 LSB

300024
400024

0x0017

UInt32 MSB

Fill serial no

300025
400025

0x0018

UInt32 LSB

300026
400026

0x0019

Uint16

Cartridge
type

1 = TCC
1002 = ICC
1030 = ACC

300027
400027

0x001A

UInt16: Year

Cartridge
expiration
date

UTC date

300028
400028

0x001B

UInt16: Month

300029
400029

0x001c

UInt16: Day

300031
400031

0x001E

UInt32 MSB

Instrument
Serial
number

300032
400032

0x001F

UInt32 LSB

300033
400033

0x0020

String char 1-2

Software
version

When shorter than 16
characters, the string is
padded with null
characters. Example:
'1.4.0-BS\0\0\0\0...'

300034
400034

0x0021

String char 3-4

300035
400035

0x0022

String char 5-6

300036
400036

0x0023

String char 7-8

300037
400037

0x0024

String char 9-10

300038
400038

0x0025

String char 11-
12

300039
400039

0x0026

String char 13-
14

300040
400040

0x0027

String char 15-
16

300041
400041

0x0028

UInt16

Memory
remaining

Approx measurements
remaining before disk is
full

300042
400042

0x0029

UInt16

Lifetime of
valve
remaining

[0, 100], percentage of
movements remaining
before service.

300043
400043

0x002A

UInt16

Lifetime of
plunger
remaining

[0, 100], percentage of
movements remaining
before service.

300044
400044

0x002B

UInt16: Year

Next service
due date

UTC date

300045
400045

0x002C

UInt16: Month

300046
400046

0x002D

UInt16: Day

300101
400101

0x0064

UInt32 MSB

TCC

Resets to zero after a
cleaning protocol or at
reboot.

300102
400102

0x0065

UInt32 LSB

300103
400103

0x0066

UInt32 MSB

ICC

Always 0 if cartridge does
not provide ICC.

300104
400104

0x0067

UInt32 LSB

300105
400105

0x0068

UInt32 MSB

Gate+

Always 0 if cartridge does
not provide Gate+

300106
400106

0x0069

UInt32 LSB

300107
400107

0x006A

UInt32 MSB

HNAC

300108
400108

0x006B

UInt32 LSB

300109
400109

0x006C

UInt32 MSB

LNAC

300110
400110

0x006D

UInt32 LSB

300111
400111

0x006E

Float 32 MSB

HNAP

300112
400112

0x006F

Float 32 LSB

300113
400113

0x0070

UInt32 MSB

ACC

Always 0 if not ACC
cartridge.

300114
400114

0x0071

UInt32 LSB

300115
400115

0x0072

UInt32 MSB

HACC

Always 0 if not ACC
cartridge.

300116
400116

0x0073

UInt32 LSB

300117
400117

0x0074

UInt32 MSB

LACC

Always 0 if not ACC
cartridge.

300118
400118

0x0075

UInt32 LSB

300119
400119

0x0076

Float 32 MSB

HACP

Always 0 if not ACC
cartridge.

300120
400120

0x0077

Float 32 LSB

300121
400121

0x0078

UInt32 MSB

Live TCC

Same as TCC, but the
value is updated live
during a measurement.
Returns to zero at the end
of the measurement.

300122
400122

0x0079

UInt32 LSB

300123
400123

0x007A

UInt32 MSB

Live ICC

see above.

300124
400124

0x007B

UInt32 LSB

300125
400125

0x007C

UInt32 MSB

Live Gate+

see above.

300126
400126

0x007D

UInt32 LSB

300127
400127

0x007E

UInt32 MSB

Live HNAC

see above.

300128
400128

0x007F

UInt32 LSB

300129
400129

0x0080

UInt32 MSB

Live LNAC

see above.

300130
400130

0x0081

UInt32 LSB

300131
400131

0x0082

Float 32 MSB

Live HNAP

see above.

300132
400132

0x0083

Float 32 LSB

300135
400135

0x0086

UInt32 MSB

Live ACC

see above.

300136
400136

0x0087

UInt32 LSB

300137
400137

0x0088

UInt32 MSB

Live HACC

see above.

300138
400138

0x0089

UInt32 LSB

300139
400139

0x008A

UInt32 MSB

Live LACC

see above.

300140
400140

0x008B

UInt32 LSB

300141
400141

0x008C

Float 32 MSB

Live HACP

see above.

300142
400142

0x008D

Float 32 LSB

300151
400151

0x0096

UInt16: Year

Date and time of last abrupt shutdown.

300152
400152

0x0097

UInt16: Month

300153
400153

0x0098

UInt16: Day

300154
400154

0x0099

UInt16: Hour

300155
400155

0x009A

UInt16: Minute

300156
400156

0x009B

UInt16: Second

300157
400157

0x009C

UInt16

Power off
time

In seconds

300165
400165

0x00A4

UInt16: Year

Date and time of last protocol start.

300166
400166

0x00A5

UInt16: Month

300167
400167

0x00A6

UInt16: Day

300168
400168

0x00A7

UInt16: Hour

300169
400169

0x00A8

UInt16: Minute

300170
400170

0x00A9

UInt16: Second

300171
400171

0x00AA

UInt16

BactoSwitch
current
measure-
ment stream

From 1 to 4

300172
400172

0x00AB

UInt16

BactoSwitch
next
measure-
ment stream

From 1 to 4

300173
400173

0x00AC

UInt16

BactoSwitch
flow rate

mL/min

300174
400174

0x00AD

UInt16

BactoSwitch
status

0 means no error.

300175
400175

0x00AE

UInt16

BactoSwitch
connection

0 = not connected
1 = connected
successfully

300176
400176

0x00AF

UInt16

BactoSwitch
valve state

Bitmask 0x01 = valve of
stream 1, etc
int 15 = all open