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).
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 got 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. |