Interface description (RS-232) for A&D FX-i and FZ-i precision balances

A&D’s FX-i and FZ-i precision balances are equipped with a serial interface (RS-232) and can be easily connected to a computer for data transfer (if necessary with a converter from RS-232 to USB or to Ethernet). You can, of course, also connect other devices such as a serial printer, a data logger or a secondary display.

I recently tested all communication modes and their various settings in order to update the product description in our German scales shop. Since this took me a lot of time, I also translated my findings into English for publication on this blog.

I found that all commonly used communication modes (a.k.a. transfer modes, transmission modes) are supported and that they can often be fine-tuned in a way rarely possible with other balances. Concerning the data format, the FX-i and FZ-i balances support not only A&D’s standard format, but also several other formats which might make these scales suitable as a drop-in replacement for older Mettler Toledo or Sartorius balances. However, the more recent SICS protocol was not implemented.

The balances support a number of commands for bidirectional communication. Unfortunately, not all applications and settings are accessible via remote commands (for example, the limits for checkweighing cannot be set by a connected computer).

You can use any terminal software to test communication via the RS-232 interface (e.g. HTerm or PuTTY). For productive use, I recommend A&D’s free WinCT software or our Simple Data Logger software. The best integration can often be achieved by customizing your own software to communicate directly with the balance.

RS-232 interface and cable

FX-i and FZ-i balances have a built-in DE9M connector and require a straight (1:1) cable (not a null modem cable):
RS-232 interface on A&D FX-300i balance

Interface parameters

Default settings are highlighted in bold:

Baud rate: 600, 1200, 2400, 4800, 9600, 19200
Data bits: 7 bits or 8 bits
Parity: even, odd (for 7 data bits), none (for 8 data bits)
Stop bits: 1 bit
Data flow control (handshaking): none (RTS and CTS lines are connected internally but not used for actual flow control).

Data format

By default, the balances use the proven A&D format and transmit 17 ASCII characters for each weight value:

First line: number; second line: ASCII characters sent by the balance; third line: hexadecimal value
 1 2 3 4 5 6 7 8 91011121314151617
ST,+00456.89gCRLF
53542C2B30303435362E38392020670D0A

As far as I know, the very first scale from A&D with a data interface already used the same format. This is very impressive, particularly when other manufacturers sometimes change the data format between firmware updates or even between transmission modes.

As alternatives to the A&D format, 5 further data formats can be used. The user manual (PDF) contains a detailed description in chapter 10-6.

Communication modes

The corresponding setting in the menu of the balance is indicated in [square brackets].

  1. Key mode: The weight is transmitted when the PRINT button on the balance is pressed.
    • Mode A: Only when the weight is stable [dout / Prt 0].
    • Mode B: Immediate transmission (stable and unstable weight) [dout / Prt 4].
    • Mode C: The balance waits until the weight has stabilized and then transmits it [dout / Prt 5].
  2. Auto-print: The weight is automatically transmitted after stabilization.
    • Mode A: Return to zero is required before next transmission [dout / Prt 1]. You can set which range around zero counts as “zero” (10, 100 or 1000 digits) [dout / AP-b]. You can also specify whether only positive, negative or all values should be transmitted [dout /AP-P].
    • Mode B: No return to zero is required before the next transmission [dout / Prt 2]. You can set the required difference from the last stable value (10, 100 or 1000 digits) [dout / AP-b]. You can also specify whether lower, higher or all values should be transmitted (compared to the last stable value) [dout /AP-P].
  3. Stream mode: Continuous transmission of 5, 10 or 20 values/s [dout / Prt 3]. The frequency is determined by the display refresh rate [bASFnc / SPd]. This mode is not suitable if you connected a printer or hardware data logger to the balance, but it is required if you want to use an external display. Our data logger software can also easily handle this number of values per second.
  4. Interval mode: Transmission of a value every 2, 5, 10, 30 or 60 seconds or every 2, 5, or 10 minutes [dout / Prt 6].
  5. Command mode: The balance responds to commands received over the interface (bi-directional communication). Available in all modes, see commands below.

In mode 1, 2 and 4, the display blinks to signal that the weight has been transmitted.

Supported commands

“Q” is used to get the weight immediately, while “S” is used to get the next stable weight. All commands must be terminated with carriage return and line feed:

No.: 1 2 3
ASCII:QCRLF
Hex:51OD0A

Complete list of commands (in alphabetical order):

?IDRequests the balance ID (can be set through the menu).
?PTRequests the pre-tare value (which has been set using the PT command).
?SNRequests the balance’s serial number.
?TNRequest the balance’s model name.
CCancels the S or SIR command.
CALSame as pressing the CAL button.
<ESC>PSame as the “S” command. <ESC> is the escape control character (1Bh). Compatible to Sartorius SBI and older Sartorius balances.
<ESC>TSame as pressing the RE-ZERO button.
EXCCalibration using an external weight (only for FZ-i).
QRequests the weight data immediately.
OFFTurns the balance off.
ONTurns the balance on.
PSame as the ON:OFF button (“P” = power?).
PRTSame as pressing the PRINT key.
PTSets a tare value, PT:xxx.x g. The unit must be transmitted using A&D’s format (3 characters, right-justified, padded with spaces).
RSame as pressing the RE-ZERO key.
SRequest the stabilized weight.
SISame as “Q” (compatible to older Mettler-Toledo balances).
SIRSwitch to stream mode (continuous transmission).
SMPSame as pressing the SAMPLE key
TTares the balance.
USame as pressing the MODE key.
ZSame as pressing the RE-ZERO key.

Other settings affecting RS-232 data transmission

You can set the balance to acknowledge valid commands with the ACK control character (06h) and to reply to invalid with “EC” and an error number [SiF / ErCd]. The manual contains detailed information and examples in chapter 16-2.

The terminator can be changed from carriage return and line feed (0Dh 0Ah) to carriage return (0Dh) [SiF / CrLf]. This affects both the output and the input (commands).

It’s also possible to change the decimal point to a comma [bASFnc / Pnt].

The balance can re-zero (tare) itself after sending the weight, which is useful during formulation [dout / Ar-d].

FZ-i balances are equipped with an internal clock and calendar and can output the time, date or time and date [bASFnc / dout / S-td]. According to the manual, this only works when outputting GLP data and not with individual weight values (I will test this later this week). This information can be added to the weight data [dout / S-td].

You can use the animal weighing application to calculate an average weight and automatically output it (as shown in this short video). Statistical calculation mode can output numbered individual weight values and summarized statistical data.

You’ll find further settings in a function table in the user manual (chapter 10).

Further information

 

Raspberry Pi: Connecting a scale can be very easy…

…as long as you choose the right scale! The photo below shows an A&D EK-2000i compact balance connected to a Raspberry Pi 3 Model B using a compatible serial cable and an FTDI RS-232 to USB converter:
Scale connected to Raspberry Pi

Python and pySerial make it easy to read weight data from a scale

On the Pi, I used Python with pySerial to read the weight from the scale. The script I put together is trivially simple. You can download it here or just type it on the Pi:
Script to read weight sent from A&D scale

By pressing the PRINT-Button on the scale, I then sent a few weight values to the Pi and the script wrote them to the terminal (b’ is added by Python):
Weight printed to terminal

In a more useful application, you would want to parse the data sent from the scale to get the weight as a number and then do something with it (maybe write it to a database). You could also do interesting things with the GPIO on the Pi like sounding an alarm when a certain weight is exceeded (though a microcontroller might be better suited for this).

I then switched the scale to “stream mode” (continuous transmission) where it sent 10 values per second (stable or not). The output you see below is the result of placing a single object on the scale and waiting for it to stabilize:
Weight data in continuous mode

I hope this example shows that it can be really easy to transfer the weight from a scale to a Raspberry Pi.

Notes on scales and the Raspberry Pi

One advantage of A&D scales is that (almost) all of them use the same data format and interface parameters and that you’ll find a good description in the manual:
A&D EK-i balance data format

However, you could use also use scales made by other manufacturers as long as they come with an RS-232 interface and the ability to send the weight in ASCII format. Available data output modes vary, so please read the product description carefully before buying.

A converter like the one I used is already built into some scales, which means that you can directly connect them to the Raspberry Pi via USB (you won’t need a serial cable). You’ll find many Ohaus scales with this interface option and the ones I’ve tested worked fine. However, cheaper scales with a USB interface can often not be used with pySerial as they do not emulate a serial port. They can also present other challenges (e.g. data that is not transmitted in human-readable ASCII format).

You do of course not have to use Python, just make sure that your preferred programming language can communicate over a serial port on the Pi. The book Raspberry Pi with Java: Programming the Internet of Things (IoT) contains projects using Ohaus scales and, well, Java.

Finally, please don’t try to use the serial interface already provided by the Pi on the GPIO pins without a logic level converter (RS-232 voltage could reach up to 15V). Excellent further information on serial ports on the Raspberry Pi can be found here.

200 years of legal metrology in Luxembourg

Did you know that Luxembourg’s law of August 21st 1816 made the metric system obligatory for all commercial transactions? I didn’t, until I was invited to the 200 year celebration “Bicentenaire de la Métrologie Légale”, which took place in Belval yesterday. The most prominent speaker, Luxembourg’s Deputy Prime Minister and Minister of the Economy Étienne Schneider, took this opportunity to announce that Luxembourg has decided to acquire an atomic clock.

Deputy Prime Minister and Minister of the Economy Étienne Schneider
Deputy Prime Minister and Minister of the Economy Étienne Schneider

Other speakers included ILNAS director Jean-Marie Reiff, BLM director Philippe Kadok, Professor Olivier Francis from the University of Luxembourg and Dr. Martin Milton, director of the BIPM. Mr. Kadok’s presentation contained a slide with interesting facts about the Service de Métrologie Légale: In 2015, this relatively small sub-organization of the BLM verified 2861 petrol pumps and more than 1450 weighing instruments of all types throughout the country.

BLM director Philippe Kadok
BLM director Philippe Kadok

Several organizations with ties to the field of metrology had set up stands in the conference hall. The Service de Métrologie Légale’s stand showcased balances, weights and other measurement instruments. Sadly, recently retired director John Kirchen was nowhere to be seen.

Service de Métrologie Légale
Service de Métrologie Légale
A&D EK-610i balance used for density determination
A&D EK-610i balance used for density determination

Visitors were also invited to take a tour of ILNAS’ recently inaugurated EMC lab (used only for market surveillance purposes, not for product certification).

 

 

Free software for scales and balances with RS-232 and USB

Are you still manually entering weight readings from your scale or balance on your PC? Is your scale equipped with a RS-232 or USB (virtual COM port) interface? If yes, you can eliminate manual data entry by connecting your scale to your computer and using our free software 232key.

232key automatically types the weight into any application

Our software runs in the background, listens to the COM port (serial port) your scale is connected to and waits for measurement values sent by the scale. Those values are then filtered, formatted and typed into the application running in the foreground at the current cursor position as simulated keystrokes. This means that 232key can be used to transfer the weight (or other measurement values) into any application that accepts keyboard inputs, e.g. Microsoft Excel, OpenOffice / LibreOffice Calc, Google Docs, a form on a website, etc.

In the following example, I used A&D’s FG-60KBM scale with an optional RS-232 interface (FG-OP-23). I connected it to my laptop with A&D’s serial cable (AX-PC09-SCA) and an inexpensive converter to USB (as my laptop doesn’t have a serial port). Upon pressing the “PRINT” key on the scale, the weight was typed directly into an input field on a website:
Transferring the weight from a scale to a website

Compatibility with scales and balances

To use 232key, you’ll need a scale with a RS-232 interface (aka. serial port, COM port, EIA-232) or an interface which appears as a (virtual) COM port when the scale is connected to your PC. This is the case for many (but not all) scales with a USB interface and for scales which support the Bluetooth Serial Port Profile.

Your scale or balance also has to send the weight in ASCII format. The weight has to be the first numeric value sent* and it should only be sent once (after you’ve pressed a key on the scale), not continuously.

The vast majority of scales and balances available on the market today fulfills these requirements. Just to give you a few examples, you should be able to use 232key with most or all scales and balances made by A&D (RS-232 only), Adam Equipment (RS-232 and USB), Ohaus** (RS-232 and USB), Kern**, MyWeigh (RS-232 only) and other well-known brands. New device profiles are constantly added!

Finally, an easy way to transfer data from your scale to your PC

We designed 232key to make your life easier. No complicated configuration is required. If your scale manufacturer or model is included in the list of predefined devices, you don’t even have to manually enter the interface parameters: Simply select your scale and click on “Default” to load the settings.
Interface settings

Not sure which COM port you scale is connected to? Press the “Auto” button and 232key will try to detect the port automatically (works with all devices which have some sort of hardware handshaking functionality, e.g. scales and balances made by A&D and MyWeigh’s popular HD series).

Do you know which decimal separator (point or comma) your scale is using? Why should you! 232key understands both input formats and lets you choose which output format you want.
Decimal separator

Would you like 232key to press an additional key after typing the weight, e.g. the “Enter” key to jump to the next row in a spreadsheet? No problem, simply specify the desired key in the “Format” tab.
Additional key

All of these useful and user-friendly features are available for free! Additional functionality is available in the paid “Plus” version of 232key.

Download and documentation

Please visit our product website 232key for further information and to download our free software. Should you have any questions or suggestions, please don’t hesitate to post them in our support section or as a comment below.


* We’ve added an exception to this rule for scales and balances made by Adam Equipment.
** Affiliate links.

Update May 2018: Write the weight to a file

232key is a great solution for sending the weight from your scale to an application running on your PC (as simulated keystrokes). In some cases, however, it makes more sense to record the weight to a file which is later opened in Excel (or other applications).

This is particularly true for unattended data logging applications running over long periods of time. Another example are applications with high data rates (several weight values per second) which would overwhelm a virtual keyboard wedge like 232key.

For these use cases, we’ve recently released Simple Data Logger, an easy to use solution for recording the weight sent from your scale to a CSV file. You can read more about it on this blog or on www.smartlux.com/sdl.

How accurate are smart scales?

Are smart scales accurate weighing instruments or just simple bathroom scales with expensive connectivity features? To find out, I tested the Withings WS-30, Fitbit Aria and A&D UC-324NFC using class M1 weights.

A&D UC-324NFC Fitbit Aria Withings WS-30
Creative Commons LicenseThis image by digitalscalesblog.com is licensed under a Creative Commons Attribution 4.0 International License

Preparation

Each of the scales had not been used before and was configured as instructed by the manufacturer. This included signing up for an account with Withings and Fitbit. In the case of A&D’s UC-324NFC, I took advantage of a function available in the Wellness Connected  app which let me “calibrate” the scale by entering the local gravitational acceleration.

The scales were tested under similar conditions with a stable temperature of around 22°C and were placed on a flat, hard surface. The Withings and Fitbit scales were left alone for a night after the initial configuration as I wasn’t quite sure how they determine the zero value: unlike older electronic scales, you don’t have to switch them on and wait for them to show ‘zero’, instead, you step right on (the UC-324NFC determines the zero point after you step off).

Test procedure

I used 20kg weights to test the scales at 40, 60, 80, 100 and 120 kg. This procedure was repeated 3 times for each scale (I did a lot of weight lifting that day).

test
Creative Commons LicenseThis image by digitalscalesblog.com is licensed under a Creative Commons Attribution 4.0 International License

Results

The first column gives you the nominal weight (in kg) and the next three are the values as shown by the scales.

Withings WS-30

4040.240.240.2
6060.360.360.3
8080.480.380.3
100100.3100.4100.4
120120.4120.4120.4

Fitbit Aria

4040.240.240.1
6060.260.260.2
8080.280.280.2
100100.3100.3100.3
120120.3120.3120.4

A&D UC-324NFC

4039.9539.9539.95
6060.0059.9560.00
8080.0080.0079.95
100100.00100.00100.00
120120.00120.00120.00

As you can see, A&D’s UC-324NFC was the most accurate scale, never deviating by more than 50g from the true value. Its 50g resolution and gravity compensation function certainly paid off.

However, the Fibit and Withings scales did a great job, too. Looking at the measurement results in each row, you’ll see that they are either identical or off by just one scale interval (100g). We can therefore say that these scales were slightly less accurate, but still very precise* (or that their repeatability was still excellent). As far as your body weight is concerned, you’ll generally be less interested in absolute values and more in tracking changes (“am I loosing or gaining weight”) and these scales would be perfectly suitable for this purpose. Nevertheless, I was a bit surprised that Fitbit and Withings didn’t use the location I had entered during account creation to adjust the scale for the local gravity acceleration. This would most likely have improved their accuracy.

Overall, the results are very good. As far as I can tell from this test, you’re not just paying for the “smart” features, you get accurate scales, too.

Further information / where to buy:

Disclosure:

  • Some links above are affiliate links.
  • My company used to sell A&D’s UC-324NFC in our German scales shop, but we don’t anymore. The Withings WS-30 and Fitbit Aria were purchased at retail prices, A&D’s UC-324NFC was purchased with a dealer discount.

*Meaning of accuracy and precision (as used in this article):
Accuracy and precision explained


[related_posts_by_tax]