WEIGHING TECHNOLOGY · IN-HOUSE DEVELOPMENT · SUPPORT
+386 2 320 33 46info@preciz.si
PRECIZWeighing technology.
Connected to your process.

NEUTRON · COMMUNICATION PROTOCOL

Neutron Modbus RTU/TCP — integration manual

Neutron Modbus RTU/TCP reference for PLC, SCADA and HMI integration: connection, addressing, registers, calibration and automatic checkweigher control.

1. MANUAL VERSIONS

Modbus
Table 1

Version

Date

Description of change

1.0

June 2026

First Neutron Modbus manual release.

2. OVERVIEW

CloudScale Neutron NS and Neutron NT provide a Modbus interface for reading weighing data, status information, digital I/O and calibration data, and for executing selected scale commands. The interface is intended for PLC, SCADA, HMI, MES and custom software integrations.

Neutron supports the following Modbus transport variants:

  • Modbus RTU through the RS-232 or RS-485 interface. The default Modbus slave / unit ID is 1.

  • Modbus TCP through Wi-Fi or Ethernet. The default TCP port is 502.

The available functions and register areas are the same logical interface for Modbus TCP and Modbus RTU, except that TCP uses a Unit Identifier only where required by the client or gateway.

Important: Communication parameters such as serial port settings and network settings must be configured in Neutron before the Modbus master is connected. The device uses the Modbus address configured by parameter MBA.

3. CONNECTION AND ACTIVATION

3.1 MODBUS TCP

Modbus TCP is available through the network connection of the Neutron. Use the IP address assigned to the device and TCP port 502. TCP communication does not require a serial line configuration.

To use Modbus TCP you must select Modbus TCP under scale communication interfaces (parameter SCI). You can use Modbus TCP while also using other interfaces, for instance you can still use RS-232 for communication with computer via CSCP protocol.

Table 2

Configuration

Result

SCI = 10

Enables Modbus TCP only.

SCI = 5,10

Enables normal RS-232 scale communication together with Modbus TCP.

SCI = 6,10

Enables normal RS-485 scale communication together with Modbus TCP.

MBA

Sets Modbus slave / unit address. Default: 1.

TCP port

502

Where several SCI values are shown, configure the interfaces according to the selected Neutron communication configuration. After applying configuration changes, restart communication or the device where required by the configuration menu.

3.2 TYPICAL TCP CONNECTION

Table 3

Item

Example

Modbus master

PLC, SCADA, HMI or industrial PC

Transport

Ethernet or Wi-Fi TCP/IP

Target address

Neutron IP address

Service port

502

Unit ID

MBA value; default 1

For a stable industrial installation, Ethernet is recommended whenever a wired network is available. Wi-Fi adds network-dependent latency and should be assessed in the application environment.

3.3 MODBUS RTU (RS-232/RS-485)

Modbus RTU can be used through RS-232 or RS-485. The serial communication settings of the Modbus master must match the serial interface settings configured in Neutron. The Modbus slave ID is set by MBA and defaults to 1.

To use Modbus RTU you must select either Modbus RS-232 or Modbus RS-485 under scale communication interfaces (parameter SCI).

Table 4

Interface

Typical wiring principle

Important note

RS-232

Connect TX, RX and GND between Neutron and the Modbus master. TX/RX may need to be crossed depending on whether the connected ports are DTE or DCE.

Use short point-to-point connections and a common signal ground.

RS-485

Connect A to A and B to B according to the terminal marking used by both devices; connect signal reference / GND where required by the installation.

Use a daisy-chain topology. Do not use star wiring. Apply line termination only at the two physical ends where required.

Always follow the Neutron terminal marking and the wiring diagram supplied with the device. Manufacturers do not always label RS-485 polarity in the same way; if no communication is established, verify the A/B polarity and the master configuration.

4. ADDRESSING AND DATA REPRESENTATION

This manual uses the conventional Modbus reference notation (for example, 40101). Many Modbus client tools use zero-based start addresses. In such tools, remove the leading register-area digit and subtract 1 from the reference address.

Table 5

Reference notation

Zero-based start address

Example

40001
0

Holding register 40001

40101
100

Holding register 40101

40232
231

Holding register 40232

40380
379

Holding register 40380

Confirm the addressing convention of the Modbus master before commissioning. An offset error of one register is the most common reason for incorrect data interpretation.

4.1 WEIGHT FORMAT

  • Gross, net and tare values are signed 32-bit integers stored in two consecutive 16-bit registers.

  • The high word is transmitted first (big-endian register order).

  • The decimal position is reported in the output / status configuration register, bits 14..13.

  • High-resolution gross and net registers 40109–40112 use two additional decimal places when the high-resolution value is available.

Example: where the decimal-position field indicates 2 decimals, the signed 32-bit value 12345 represents 123.45 in the active unit. The unit is available in register 40113 and is also encoded in the output/status configuration register.

5. SUPPORTED MODBUS FUNCTIONS

Table 6

Function

Name

Use in Neutron

01

Read Coils

Read digital output states (coils 1..6 map to DO1..DO6).

03

Read Holding Registers

Read writable and command-related registers.

04

Read Input Registers

Read process data, weights and status registers.

05

Write Single Coil

Set one digital output where output function is disabled.

06

Write Single Register

Write one holding register, including command-related fields.

15

Write Multiple Coils

Set multiple digital outputs where functions are disabled.

16

Write Multiple Registers

Write command, parameters and calibration data as a block.

Write operations to outputs controlled by a configured output function are rejected. Typical function-controlled outputs include tolerance and dosing outputs.

6. PROCESS DATA REGISTER MAP

6.1 MAIN PROCESS REGISTERS

Table 7

Input / Holding reference

Description

Data type / notes

30001-30002 / 40001-40002

Gross weight

Signed INT32, big-endian register order.

30003-30004 / 40003-40004

Net weight

Signed INT32, big-endian register order.

30005 / 40005

Scale status

Bit field; see section 6.3.

30006 / 40006

Command status

Command processing state.

30007 / 40007

Output / status configuration

Bit field: outputs, unit and decimal position.

The main map allows simple masters to obtain net or gross weight and key status data using a small contiguous register range.

6.2 EXTENDED PROCESS REGISTERS

Table 8

Holding register

Description

Data type / notes

40101-40102

Gross weight

Signed INT32.

40103-40104

Net weight

Signed INT32.

40105-40106

Tare weight

Signed INT32.

40107

Scale status

Bit field; see section 6.3.

40108

Output / status configuration

Bit field; see section 6.3.

40109-40110

Gross high-resolution

Signed INT32; two extra decimal places where available.

40111-40112

Net high-resolution

Signed INT32; two extra decimal places where available.

40113

Unit

0 = g; 1 = kg; 2 = t; 3 = lb.

40114

Digital input mask

Bits 0..5 = DI1..DI6.

40115

Digital output mask

Bits 0..5 = DO1..DO6.

40116

Output function mask

A set bit means the related output is function-controlled.

40117

ADC points

Raw ADC value.

40119

Millivolts

Load-cell signal in mV.

40231

Command status

Command processing state.

40232

Command

Write command code here.

40233

Command parameter 1

Optional parameter for the command in 40232.

6.3 STATUS AND CONFIGURATION BIT FIELDS

6.3.1 SCALE STATUS REGISTER (30005 / 40005 / 40107)

Table 9

Bit

Meaning (if bit value=1)

0

Net weight is negative.

1

Gross weight is negative.

2

Weight is stable.

3

Underload condition.

4

Overload condition.

5

Tare is active.

6

Preset / manual tare is active.

7

Gross weight is zero.

8

Digital input 1 is active.

9

Digital input 2 is active.

10

Scale / ADC error is active.

6.3.2 OUTPUT / STATUS CONFIGURATION REGISTER (30007 / 40007 / 40108)

Table 10

Bit(s)

Meaning

0..5

Digital output status: DO1..DO6.

6..7

Active unit code: 0 = g; 1 = kg; 2 = t; 3 = lb.

8

Scale / load-cell error.

13..14

Decimal-position code for standard weight values.

For applications that require all output states, use register 40115. Use register 40116 to determine which outputs are currently reserved by the active function.

7. COMMANDS AND DIGITAL OUTPUTS

7.1 COMMAND REGISTER OPERATION

Write a command code to holding register 40232. Write the optional parameter to 40233 before issuing the command. The command status can be read from 40231. Command code 0 clears the repeat guard and allows the same command to be executed again.

Table 11

Command code

Parameter 40233

Action

0
-

No command; reset repeat guard.

1
0

Zero after stability check.

1
1

Zero immediately.

2
0

Tare after stability check.

2
1

Tare immediately.

3
-

Clear tare.

25

Output bit mask

Set digital outputs according to the bit mask.

Shortcut: writing the command code to holding register 40001 also executes the command. For predictable integration, the extended command registers 40232 and 40233 are recommended, particularly where a parameter is required.

7.2 DIGITAL OUTPUTS

  • Coils 1..6 correspond to DO1..DO6.

  • Use functions 01, 05 and 15 to read or write coils.

  • An output can only be changed through Modbus when its output function is disabled.

  • If an output is controlled by a tolerance, dosing or other active function, the device rejects Modbus writes to that output.

Example: To activate DO1 and DO3 with command code 25, write a bit mask of binary 000101 (decimal 5) to 40233 and then write 25 to 40232. Verify the result through register 40115 or coils 1..6.

8. CALIBRATION INTERFACE

Calibration is performed through holding registers. Successful calibration data are stored to flash memory. If calibration fails, the changed data are not saved.

8.1 CALIBRATION DATA

Table 12

Holding reference

Zero-based start

Description

40300
299

Calibration status bit field.

40301
300

Scale channel.

40302
301

Number of decimals used for calibration weights.

40303
302

Number of valid calibration points.

40304-40305
303

Zero ADC point, signed INT32.

Table 13

Calibration-status bit

Meaning

0

Zero point exists.

1

First calibration weight point exists.

2

Scale has the minimum valid calibration.

8

Scale / ADC error is active.

8.2 CALIBRATION POINT BLOCKS

Point 1 starts at 40310 (zero-based start 309). Each calibration point uses eight registers. The start register for point N is 40310 + ((N - 1) x 8).

Table 14

Offset in point block

Description

+0

Valid flag: 0 = invalid; 1 = valid.

+1..+2

Calibration weight, signed INT32.

+3..+4

ADC point, signed INT32.

+5..+6

Factor x100, signed INT32.

+7

Reserved.

Examples: point 1 = 40310-40317; point 2 = 40318-40325; point 3 = 40326-40333; point 8 = 40366-40373.

8.3 CALIBRATION COMMANDS

Table 15

Holding reference

Zero-based start

Description

40380
379

Command.

40381
380

Point number.

40382-40383
381

Calibration weight, signed INT32.

40384
383

Flags.

40385
384

Trigger.

40386
385

Command result.

40387
386

Last executed command.

Table 16

Command

Description

1

Calibrate zero.

2

Calibrate weight point.

3

Delete calibration point.

4

Delete zero point.

5

Delete all calibration.

6

Reload / initialize scale.

Flags register 40384: bit 0 controls whether stability is required. A value of 0 executes immediately; a value of 1 requires a stable ADC average. All other flag bits are reserved.

Table 17

Result 40386

Meaning

0

OK.

1

Incorrect command.

2

Bad data.

3

Not allowed.

4

Unsupported command.

5

Calibration failed.

8.4 TRIGGER SEQUENCE

Firmware processes calibration only when the trigger register 40385 changes to a non-zero value. Use the following sequence for every calibration command:

  1. Write command and all required parameters.

  2. Write 40385 = 1 to execute the operation.

  3. Wait for command completion and read 40386.

  4. Write 40385 = 0 to reset the trigger.

  5. For the next command, write parameters and change 40385 to 1 again.

8.5 EXAMPLES

Table 18

Command

Calibrate zero

Purpose

Write Multiple Registers starting at zero-based address 379.

Responses

40380 = 1

Command: calibrate zero.

40381 = 0

Point number not used.

40382 = 0; 40383 = 0

Calibration weight not used.

40384 = 1

Require stable ADC average.

40385 = 1

Trigger operation.

Read 40386

Expected result: 0 (OK).

Table 19

Command

Calibrate point 1 with 10.000 kg

Purpose

For 40302 = 3, scale the calibration weight by 1000.

Responses

40380 = 2

Command: calibrate weight point.

40381 = 1

Point number 1.

40382-40383 = 10000

10.000 kg x 1000.

40384 = 1

Require stable ADC average.

40385 = 1

Trigger operation.

Read 40386

Expected result: 0 (OK).

Table 20

Command

Delete point 1

Purpose

Remove the first calibration point.

Responses

40380 = 3

Command: delete calibration point.

40381 = 1

Point number 1.

40385 = 1

Trigger operation.

Table 21

Command

Delete all calibration

Purpose

Remove all stored calibration data.

Responses

40380 = 5

Command: delete all calibration.

40385 = 1

Trigger operation.

9. COMMISSIONING AND TROUBLESHOOTING

  1. Configure SCI for the required interface combination and set MBA to the required Modbus slave / unit ID.

  2. For Modbus TCP, confirm IP address and connect to TCP port 502. For Modbus RTU, match serial parameters and verify the wiring.

  3. Read a known register such as 40113 (unit) or 40107 (scale status) to validate addressing.

  4. Read 40101-40106 and decode the signed 32-bit gross, net and tare values using the reported decimal position.

  5. Verify scale status, digital inputs and outputs before enabling control functions.

  6. Use command registers and calibration functions only after confirming that the correct scale channel and application state are active.

9.2 COMMON ISSUES

Table 22

Symptom

Likely cause

Action

No Modbus response

Scale communication interface (SCI) is not configured for the selected interface; wrong IP/port or serial settings; incorrect wiring.

Verify SCI, TCP port 502, MBA, network reachability, serial parameters and physical wiring.

Values appear shifted or invalid

Client uses an incorrect reference / zero-based register conversion; 32-bit words decoded in wrong order.

Check the client addressing convention and use signed INT32 with big-endian register order.

Weight has wrong decimal position

Client ignores decimal-position configuration or high-resolution format.

Read 40108 and apply bits 14..13; use high-resolution registers only when required.

Output cannot be written

Output is controlled by an assigned function.

Read 40116 and disable the relevant output function before controlling the output via Modbus.

Same command does not execute again

Repeat guard has not been reset.

Write command 0 to 40232, then issue the command again.

Calibration command has no effect

Trigger did not change to non-zero or was not reset after a previous command.

Set all parameters, change 40385 to 1, read 40386, then write 40385 back to 0.

Safety note: Calibration, zeroing, taring and output control can affect the weighing result and connected machinery. Apply access control, validate commands in the host application and ensure that all operations comply with the applicable metrological and machine-safety requirements.

10. Automatic checkweigher

This chapter describes the basic CHECKWEIGHER interface, register map version 1. It supports reading process status and the last completed result, selecting an existing recipe, configuring autostart, and START / STOP / STOP NOW / RESET. Recipe editing, filter configuration, application selection, I/O assignment and detailed debug streaming are not included. Configure these using the normal setup interface before using this block.

10.1 Connection and addressing

The map is identical on Modbus TCP and enabled Modbus RTU interfaces. Use one controlling client/master; additional readers may monitor the data. There is one shared command mailbox across all transports, not one mailbox per client. Do not use broadcast requests for this interface. Before controlling, read the block and confirm application=4 (CHECKWEIGHER), channel and snapshot validity.

Addresses below are zero-based PDU addresses. For clients using 4xxxx notation, reference = 40001 + address: address 400 is 40401 and address 480 is 40481. Use function 03 (or 04) to read. Write commands only with function 16 (0x10), starting at 480 and writing exactly eight registers. Function 06 and partial writes are rejected. Result/status registers are read-only. The gap between the read and write blocks is not readable.

Read address 400, count 48 to obtain status, command acknowledgement and the last result in one request. Alternatively read 400/count 24 for status or 424/count 24 for the result. All 32-bit values use the high word first; each register uses the standard Modbus high-byte-first order. Do not split a 32-bit value across separate requests.

10.2 Status and result register map

Table 23

PDU / reference

Words

Name / type

Description

400 / 40401
1

MAP_VERSION / UINT16

1 for this map.

401 / 40402
2

BOOT_ID / UINT32

Nonzero random session token generated on device boot. Echo in every write; not retained across reboot. This is not a security credential.

403 / 40404
1

CHANNEL / UINT16

Current weighing channel.

404 / 40405
1

APPLICATION / UINT16

Must be 4 for control.

405 / 40406
1

STATE / UINT16

0 IDLE; 1 START_CHECK; 2 RUN; 3 DRAINING; 4 PAUSED; 5 STOPPED; 6 ERROR; 7 CONS_LOST.

406 / 40407
1

ACTIVE_ID / UINT16

Selected recipe; may differ from RESULT_ID of the previous product.

407 / 40408
1

AUTOSTART / UINT16

Persistent CWAUTO: 0 disabled, 1 enabled.

408 / 40409
1

PROCESS_ERROR / UINT16

Current blocking process error; 0 none.

409 / 40410
1

BELT / UINT16

Logical belt request, 0/1; not motor feedback.

410 / 40411
1

CONS / INT16

-1 (0xFFFF) not assigned; 0 inactive; 1 active.

411 / 40412
1

PQ / UINT16

Pending products.

412 / 40413
1

EQ / UINT16

Pending/active output events.

413 / 40414
1

AUTO_STATE / UINT16

Autostart outcome: see 10.5.

414 / 40415
1

AUTO_ERROR / UINT16

Error of boot autostart; 0 none.

415 / 40416
1

SNAPSHOT_VALID / UINT16

1 usable snapshot; 0 unavailable. Also check APPLICATION before control.

416 / 40417
2

REQUEST_ID / UINT32

Last accepted request; changes immediately on acceptance.

418 / 40419
2

ACK_ID / UINT32

Last completed request. 0 means none since boot.

420 / 40421
1

COMMAND_STATE / UINT16

0 IDLE; 1 BUSY; 2 DONE; 3 ERROR.

421 / 40422
1

COMMAND_ERROR / UINT16

Application error of completed request; see 10.4.

422 / 40423
1

APPLIED_MASK / UINT16

Bit 0 recipe selection applied; bit 1 autostart applied. May be nonzero when START fails.

423 / 40424
1

LAST_COMMAND / UINT16

Command code of last accepted request.

424 / 40425
2

RESULT_SEQ / UINT32

Sequence of last completed product; compare together with BOOT_ID.

426 / 40427
1

RESULT_ID / UINT16

Recipe used for this result.

427 / 40428
1

RESULT_FLAGS / UINT16

Bit 0 result exists; bit 1 mass valid/representable; bit 2 limits representable; bit 3 numeric conversion overflow/invalid.

428 / 40429
1

DECIMALS / UINT16

Decimal places for W, LO and HI of this result.

429 / 40430
1

UNIT / UINT16

0 g; 1 kg; 2 t; 3 lb; 4 oz; 5 N; 65535 other/unknown. Do not assume g for unknown units.

430 / 40431
2

W / INT32

Net mass including tare; divide by 10^DECIMALS. Use only when RESULT_FLAGS bit 1 is set.

432 / 40433
2

LO / INT32

Lower tolerance limit; use only with flags bit 2.

434 / 40435
2

HI / INT32

Upper tolerance limit; use only with flags bit 2.

436 / 40437
1

WS / UINT16

Mass classification: 0 LOW; 1 OK; 2 HIGH; 3 ERROR.

437 / 40438
1

LTS / UINT16

Length: 0 OK; 1 LENGTH_LOW; 2 LENGTH_HIGH; 3 DISABLED.

438 / 40439
1

RESULT / UINT16

0 LOW; 1 OK; 2 HIGH; 3 ERROR; 4 OVERLAP; 5 ABORTED; 6 ABORTED_CONS.

439 / 40440
1

PRODUCT_ERROR / UINT16

Error of this product; separate from PROCESS_ERROR.

440 / 40441
1

NS / UINT16

Accepted samples of the last completed result, before trimming; not the current product sample count.

441 / 40442
2

TD / UINT32

Detection time in milliseconds since boot; wraps after approximately 49.7 days.

443 / 40444
2

ET / UINT32

Milliseconds from detection to result.

445 / 40446
2

LT / UINT32

Product sensor ON duration in milliseconds; 0 in mass-trigger mode.

447 / 40448
1

RESERVED / UINT16

0; ignore for version 1.

Status and the last result are copied under the process lock. Each response contains a consistent snapshot; a subsequent request may see newer data. RESULT_SEQ, RESULT_ID, DECIMALS and UNIT belong to the stored result, not to the currently selected recipe. Before the first result, flags bit 0 is clear: do not interpret the zero-filled result fields as a real zero-weight product. Reading never consumes or clears a result.

Example: W high=0x0000, low=0x07D1 gives signed integer 2001. With DECIMALS=1 and UNIT=0 the mass is 200.1 g. Negative values use 32-bit two’s complement. If conversion exceeds INT32 or the scale value is not representable, the corresponding validity bit is clear, its numeric registers are zero, and flag bit 3 is set. The original product result is not changed.

10.3 One-write control block

Table 24

Address / reference

Name

Value

480 / 40481
COMMAND

0 settings only; 1 START; 2 STOP DRAIN; 3 STOP NOW; 4 RESET.

481 / 40482

CHANGE_MASK

Bit 0: select RECIPE_ID. Bit 1: set AUTOSTART. Other bits must be 0.

482 / 40483

RECIPE_ID

1–500 when mask bit 0 is set. Otherwise write 0. Recipe must already exist.

483 / 40484
AUTOSTART

0 or 1 when mask bit 1 is set. Otherwise write 0.

484–485 / 40485–40486

REQUEST_ID

UINT32, high word first. Next nonzero ID after ACK_ID. First request is 1; after 0xFFFFFFFF use 1.
486–487 / 40487–40488

BOOT_ID

UINT32, high word first. Echo the current token from 401–402.

For COMMAND 2, 3 or 4, CHANGE_MASK, RECIPE_ID and AUTOSTART must all be 0. Settings may be combined with COMMAND 0 or 1. Recipe selection and autostart changes require a stopped, drained process. START without the recipe-change bit starts the currently selected recipe. Application selection and recipe creation remain outside Modbus scope.

The complete frame is validated before it is accepted. No partial control-block writes take effect. A normal function-16 response means the request was accepted into the mailbox, not that START succeeded. Execution occurs from the existing main loop. Poll until ACK_ID equals the submitted ID and COMMAND_STATE is DONE or ERROR. BUSY may be too brief to observe; never require observing it before accepting DONE.

Keep one request outstanding. If the write times out, reread BOOT_ID, REQUEST_ID and ACK_ID. If the boot token is unchanged, retransmit exactly the same eight words if necessary. A repeat of the most recently accepted request with identical data is acknowledged without executing it again, whether pending or completed. The same ID with changed data, skipped/old IDs, a different boot token, or another request while BUSY is rejected. After a reboot, resynchronise with the new token and current process state; do not automatically replay an old START.

Only the latest request is retained for duplicate detection; there is no persistent command journal. A network restart without a device reboot does not clear the mailbox. This protocol assumes one controlling PLC; it does not arbitrate competing writers. The boot token and request counter prevent accidental replays, not unauthorised access.

10.4 Applied settings, command results and errors

Recipe selection is applied first, autostart second, and the command last. Syntax, ID range and recipe validity are checked before setting changes. Flash errors can still leave an earlier setting applied. APPLIED_MASK reports exactly which requested settings succeeded. For example, recipe 25 and AUTOSTART=1 may be saved while START is refused because CONS is inactive: COMMAND_STATE=ERROR, COMMAND_ERROR=11, APPLIED_MASK=3. Settings are not rolled back. Read back ACTIVE_ID and AUTOSTART before deciding what to retry.

The error codes below belong to COMMAND_ERROR and must not be confused with process/product error fields. A rejected transport-level write does not change the mailbox or ACK_ID. Illegal addresses, read-only writes, partial writes and unsupported block ranges return Modbus exception 02. A correctly addressed eight-word control write with invalid data, token, sequence or mailbox state returns exception 03.

Table 25

Code

Meaning

0

Success.

1

Selected recipe missing or invalid.

5 / 6

START refused: weight outside allowed range.

7

Required memory unavailable.

11

Configured CONS is inactive.

13

Recipe unit does not match the scale.

15

Sensor configuration/state prevents the operation.

16

Wrong application, running process, outstanding fault or conflicting scale operation.

17

Invalid request arguments or measuring system not ready.

25

Settings/database read or write failure.

STOP DRAIN accepts no new products and finishes accepted products and output events. Its DONE acknowledgement means the stop was requested; STATE=5 confirms completion. STOP NOW cancels open products/events and deactivates process outputs. STOP is not a substitute for RESET in a blocking fault. RESET rechecks the scale and prerequisites and does not start the belt; if the cause remains it fails. All commands use the normal checkweigher interlocks. A result is a measurement outcome, not confirmation that a physical reject actuator operated.

10.5 Autostart

AUTOSTART is the persistent CWAUTO setting, default 0. Enabling it does not start immediately; combine with COMMAND=1 for an immediate START. At the next device boot, application CHECKWEIGHER must be selected, initial zeroing enabled and successful, and a valid last active permanent recipe available. Normal START checks still apply. A failed boot attempt is not retried when an input later changes. Manual STOP, PAUSE or faults do not trigger automatic restart. Unchanged values do not cause another settings write.

AUTO_STATE: 0 DISABLED; 1 WAIT_ZERO; 2 ZERO_DISABLED; 3 ZERO_FAILED; 4 NO_PRODUCT; 5 STARTED; 6 START_FAILED; 7 CANCELLED; 8 INACTIVE; 9 INIT_FAILED. AUTO_ERROR is the rejected boot START code. This is the outcome of the boot attempt; STATE and PROCESS_ERROR describe the current process.

10.6 PLC examples

Example 1 — read everything: function 03, PDU start=400, count=48 (reference 40401). Verify MAP_VERSION=1, APPLICATION=4 and SNAPSHOT_VALID=1. Save BOOT_ID and ACK_ID. No command is needed to read data.

Example 2 — select recipe 25, enable autostart and START in one write. Assume BOOT_ID=0x12345678 and ACK_ID=0. Write function 16, PDU start=480, count=8 with decimal words: [1, 3, 25, 1, 0, 1, 4660, 22136]. The boot words are illustrative: always copy them from the device. Wait for ACK_ID=1 and COMMAND_STATE=2, then verify STATE=2 (RUN). If COMMAND_STATE=3, inspect COMMAND_ERROR and APPLIED_MASK.

Example 3 — STOP DRAIN. Assuming the previous request completed, submit [2, 0, 0, 0, 0, 2, 4660, 22136]. Wait for ACK_ID=2. DONE confirms acceptance; continue polling until STATE=5 (STOPPED). Pending products may still produce results while DRAINING.

Example 4 — change only the recipe, once stopped: [0, 1, 26, 0, 0, 3, 4660, 22136]. This leaves autostart unchanged and does not start. Start later with [1, 0, 0, 0, 0, 4, 4660, 22136].

Example 5 — reset a corrected fault: COMMAND=4 with mask/recipe/autostart=0, next request ID and current BOOT_ID. Wait for a successful acknowledgement; issue a separate START if required. Do not send RESET repeatedly without diagnosing the fault.

Suggested cyclic PLC logic (Structured Text pseudocode; adapt Modbus block names to your PLC):

ReadHoldingRegisters(Start := 400, Count := 48, Data := Rx);
BootId := JoinUInt32(Rx[1], Rx[2]);
AckId := JoinUInt32(Rx[18], Rx[19]);
IF BootId <> SavedBootId THEN
    SavedBootId := BootId; HaveSeenResult := FALSE;
    (* Resynchronise command handling; do not replay old START. *)
END_IF;
IF (Rx[15] = 1) AND ((Rx[27] AND 1) <> 0) THEN
    Seq := JoinUInt32(Rx[24], Rx[25]);
    IF NOT HaveSeenResult OR (Seq <> SavedSeq) THEN
        SavedSeq := Seq; HaveSeenResult := TRUE;
        IF ((Rx[27] AND 2) <> 0) AND (Rx[29] <> 65535) THEN
            Mass := SignedInt32(Rx[30], Rx[31]) / Power10(Rx[28]);
        END_IF;
        Samples := Rx[40]; ProductResult := Rx[38];
        (* Process this snapshot once, including invalid/rejected products. *)
    END_IF;
END_IF;

NS refers to the last completed product and is unchanged until a new result arrives. A last-result register block is not a queue: if two products finish between polls, the intermediate result is not retrievable through this basic map. Monitor SEQ changes and choose a poll interval below the shortest product interval. After reconnecting, decide whether the first available result should be recorded as a recovered snapshot or used only as the initial baseline. This interface does not guarantee an audit trail for every product.

10.7 Commissioning checks

  1. Verify both address conventions, word order and known positive/negative masses; read all 48 words and both 24-word sub-blocks.

  2. Verify no-result flags before the first product, then an OK, LOW and invalid product; confirm result ID/unit stay attached to the stored result after recipe selection changes.

  3. Repeat an identical accepted write before/after completion: it must execute once. Try a changed payload with the same ID, a skipped ID, a partial write and a read-only write: each must be rejected without changing accepted settings.

  4. Test START with inactive CONS and inspect APPLIED_MASK; test STOP DRAIN until STOPPED, STOP NOW, fault RESET and a subsequent START.

  5. Disconnect/reconnect and reboot the device. Verify request resynchronisation and that an old boot token is rejected. Test enabled/disabled autostart with successful and failed initial zeroing.

  6. Repeat on the actual PLC and both configured TCP/RTU transports. Confirm that cyclic communication does not prevent weighing or output timing.

Frequently asked questions

How do I convert a register reference into a PDU address?

The register tables use one-based 4xxxx references. For reference 40101, the zero-based PDU address is 100. Use the addressing convention required by your Modbus client.

How many extra decimal places do high-resolution weights use?

High-resolution gross and net weights in registers 40109–40112 use two additional decimal places when available. Decode them as signed 32-bit values and account for the decimal-position configuration.

Is the automatic checkweigher result block a queue?

No. It holds the last completed product result and remains unchanged until a new result arrives. Monitor SEQ and choose a polling interval shorter than the shortest product interval. Intermediate results cannot be retrieved from this basic map.

Can a PLC replay START after the device restarts?

Resynchronise command handling when BOOT_ID changes. Read the current BOOT_ID and ACK_ID, do not replay an old START, and follow the command mailbox sequence and checks described in the PLC examples.