There is SX-DMM, a free software to control mtx3283, but it is for Windows only. I would like to control the instrument from Linux, so I could get advantage of various Linux tools.
I couldn't find any Linux tool for the MTX 3283 DMM, so I start reverse engineering the protocol. It is a MODBUS over serial RS232, a very well known protocol met usually in industrial devices and SCADA, with available documentation.
http://www.modbus.org/docs/Modbus_over_serial_line_V1.pdfHowever, while the MODBUS protocol is easy and well standardized, the registers addresses and the registers meaning is not specified by modbus. Each device defines its own registers upon wish. Modbus sees them like some sort of memory mapped values, can read or write those registers, but has no knowledge about which register means what for a particular device.
I've installed the official SX-DMM software in a Win7 virtual machine, and sniffed the serial communication. So far I found that:
- when establishing the communication for the first time, the old v2.2 software repeats the telegram 9 times if there is no response. Telegrams are at 1 second apart, 3 times at 9600 baud, 3 times at 19200 and 3 more times at 38400 baud (in this order). If no response, then it stops with error message no -120, "Channel 1 : Invalid message or Time Out".
- MTX 3283 uses 38400 baud, 8, n, 1
- protocol is modbus ASCII
- first modbus request is Read Holding Registers (0x03) from address 2, length 1 register
- the instrument replies with a telegram containing the number "3283", which obviously here is the instrument model
Protocol
========
- modbus ASCII
- 38400, 8, n, 1
- first command when communication initiated from sx-dmm 2.2 is
3a 01 03 00 02 00 01 f9 0d 0a
which is sent as ASCII
: 0 1 0 3 0 0 0 2 0 0 0 1 F 9 CR LF
which means
: ---> header
0 1 ---> slave address (0x01)
0 3 ---> function (0x03 is for Read Holding Registers)
0 0 0 2 ---> start address (0x00 0x02)
0 0 0 1 ---> number of coils/registers (0x00 0x01)
F 9 ---> checksum (0xF9)
CR LF ---> trailer
- the response from the instrument is '3283' (0x0cd3 == 3283, the instrument model).
- the response telegram in raw modbus is
3a 01 03 02 0c d3 1b 0d 0a
received as ASCII
- note that there is something with the checksum reported by QModBus, CRC is displayed in red as "0020 (0065)"
Does anybody have the modbus registers map for the Chauvin-Arnoux Metrix MTX 3283, 3282 or 3281?