Eurotherm Modbus RS232 Control

Reads and writes information to Eurotherm controllers via Modbus RTU protocols.
2.7K Downloads
Updated 31 Mar 2017

View License

Reads and writes information to Eurotherm controllers via Modbus RTU protocols. Currently only tested with serial RS232, but should work the same with RS485 if wired correctly. So far only tested with Eurotherm 2416 and 3216 temperature controllers but they all use the same language so it should be widely applicable. The code is well commented so you should be able to modify it easily. I've currently only implemented it using read and write n words (codes 3 and 16), but I'd be happy to implement the other features, such as fast status read etc. (code 7). This code is derived from that in CO2gui, but is implemented using the native MATLAB serial interface only.
To use it:
1. Generate the serial object (this one is done on COM7)
serialObject = tempobj(7);
2. Connect to the object:
tempobjconnect(serialObject)
3. Start sending commands!
format:
tempobjcomm(commandType, serialObject, deviceAddress, parameterAddress, values)
e.g. to get the set temperature and the current temperature (process variable) in one go, do:
(assuming a default device address of 1)
data = tempobjcomm('read', serialObject, 1, 1, 2);

where data(1) is the current temperature and data(2) is the set temperature. Note that if your temperature controller has decimal places on the front panel, the outputs using 'read' will be scaled. E.g. if 1 decimal place, 24.2 will be returned as 242.

Higher resolution can be obtained using 'readfullres' instead, and also avoids any scaling issues.

To set a new set temperature:

tempobjcomm('write', serialObject, 1, 2, newTemperature)

'writefullres' can be used again if required for higher resolution. The same scaling issues apply as above for reading temperatures.

UPDATE

A deviceAddress can included in the initial serial object (see notes) for persistence' sake.

A host of sample settings files for Eurotherm controllers are included (with a device address of 1, but these can be easily modified).

Cite As

Geoffrey Akien (2024). Eurotherm Modbus RS232 Control (https://www.mathworks.com/matlabcentral/fileexchange/24696-eurotherm-modbus-rs232-control), MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R14SP3
Compatible with any release
Platform Compatibility
Windows macOS Linux
Acknowledgements

Inspired by: CO2gui - lab control and automation

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.74.0.0

Added onoff into the package

1.73.0.0

Bugfix: added missing files serialread, serialwrite, serialflush, isrunning

1.72.0.0

Bugfix: added the missing isserial into the package

1.71.0.0

Bugfix for tempobjcomm allowing NaN values through when using write/writefullres

1.7.0.0

Bugfix, now allows parameter addresses of 0 (formally not supported by Eurotherm, but other modbus devices e.g. Omron do use it).

1.6.0.0

Added attribution to CRC append (used to be there, not quite sure where it went).

1.5.0.0

Bugfix.

1.4.0.0

tempobjcomm.m bugfix: isvaliddeviceaddress is now isvalidtempobjdeviceaddress.

1.3.0.0

Updated description.

1.2.0.0

Cleaned up commenting and some MLint messages (2012b), abstracted some functions for future use, and added capability to specify deviceAddress in tempobj. Also bundled a range of m.files for reading specific parameters.

1.0.0.0