Problem with ModBus addressing between AC800M and gas-analyzer ACF-NT FTIR
I have a problem with a modbus addressing between gas-analyzer system and a controller of ABB. The purpose is to be read a six modbus signals from gas-analyzer system ABB ACF-NT FTIR. The controller is an ABB – AC800M. The only information about the modbus addressing of the analyzer is the attachment. It is slave with address 2.
In the operator manual of the controller, about the modbus addresses is written: ‘%IX10#00’ or ‘%QX10#00’. (the address is from type string)
% – address is written in the controller AC800M of ABB;
I (Q) – the signals are input (output);
X – the signals are discrete;
10 – base ten;
# – it divides the base and the start address;
00 – start address.
The status signals which have to be read are six.
When we use an address %IX10#0, we can read the first three status signals. We can’t read the others because the data type doesn’t allow more than three values to be written with this address. With address %Q X10#00 I tried to read more addresses like 24. In this case all the addresses we want to read isn’t visible while they are been simulated, like exception is one signal on position two which is active during a specified time but it is unreal for us.
During this unsuccessful experiences I tried to put an address (it is tried for the both variants IX and QX):
10#12074 (it is tried and the sixteen base)
10#12075 (it is tried and the sixteen base)
10#12076 (it is tried and the sixteen base)
10#12077 (it is tried and the sixteen base)
10#12078 (it is tried and the sixteen base)
10#12079 (it is tried and the sixteen base)
10#2073 (it is tried and the sixteen base)
10#2074 (it is tried and the sixteen base)
10#2075 (it is tried and the sixteen base)
10#2076 (it is tried and the sixteen base)
10#2077 (it is tried and the sixteen base)
10#2078 (it is tried and the sixteen base)
With these addresses the function block in the controller (MBRead) receives an error -4924. The interval time of the whole program for modbus communication is 250ms.
From the function code 02 we see that we have to read discrete inputs.
In the analyzer the addresses of the status signals are between 2073 and 2078. They are obtained by the difference of 12074-10001, like from 10001 start discrete outputs.
What global address I have to put in the program in the controller to read the whole six status signals? If I have to put IX (discrete input) or QX (discrete output) and in which base (10 or 16) and with what start address?
Thank you in advance!
Best Regards: Albena
Voted best answer
Some Modbus devices will allow to read only the entire block of data. Here the device contains 20 digital signals, try to read the entire block from 1-20 using address
'%IX10#2059'. In previous answer you have specified u can able to read analog values successfully, can you share what address are you using for it?
I have no idea with ABB ACF-NT FTIR communication over modbus with ac 800m, but the error -4924 depicts "Channel Parameter is null" in CBM help. Can you check with your channel parameters settings in configuration if something missing or misconfigured. May that helps you in communicating with addresses.
Hello Mr Gargav,
Thank you for your answer. I am sorry but I was wrong about the number of the error. It is -4929 and it means: Timeout, no answer from slave.
While it requested the error, the communication with the analyzer is valid and it is reading the measurements (analog) signals. This error is shown only in the function block (MBRead) of the status signals, because I don't know the right global address which i have to put in the controller's program to read all six status signals.