12-03-2012 05:45 AM
Dear Madam, Dear Sir,
while reading the memory of a measurement device via the Modbus IO Server
under Labview 2012 together with the DSC module via Ethernet I only get the reading value(s)
zero and the timestamp of the data is also not updated which can be seen
via the tools DSM and NIMAX with the later if data logging is activated.
The problem exists also if only 16bit (1 register = 3 bytes) interger values are read.
On the other side with a software tool belonging to this measurement device I can
read the data via Ethernet without any problems.
From a different measurement device I can however read the data also without any problems
with the Modbus IO server under Labview 2012 and with the DSC module.
It's really strange and a hint about this problem would really help me.
Greetings in advance
JKitzbichler
12-03-2012 07:23 AM - edited 12-03-2012 07:24 AM
Having a hard time understanding what exactly you are trying to say.
(1) 16 bit integer = 2 bytes (you had stated 3 bytes).
In any case the Modbus I/O server, while easy to implement, is less flexible than the Modbus function block palette. Which is my first suggestion, implement the comms using the modbus function palette, and turn off the Modbus I/O server.
1) What modbus function code are you executing to talk to your measurement device?
2) Does the measurement device issue a modbus exception code? (I do not know how you might see the exception using the modbus I/O server, it is easy to see using the function blocks).
12-03-2012 10:10 AM
Dear Kudos,
thank you for your reply.
To your question:
To 1), of course 1 register = 2 bytes - it was a literar error
To your second 1), I try to read an unsigned integer with the following project variable setting: "Mein Computer\TestBiblio.lvlib\Modbus1\319000"
To 2), The IO-Server sends no error (code), on the contrary the status, quality replied is okay. I have attached a screenshot of the NI-DSM output (s. enclosure).
I have also marked the pogress of the zero values in the graphic.
Also I have enclosed the settings for the environment variable to be read.
By the way would you have a simple example with a function block solution for the modbus server with reading of one or more values
of type unsigned integer or single with address codes like 319000 or D319004 or F319008?
Thank you in advance and greetings
JKitzbichler
12-03-2012 01:38 PM
Have you tried the opc quick client to see what values it shows? This will be independent of labview code to interpret the data and will show if the communication is working properly.
12-03-2012 01:42 PM
Another option is to download modbuspoll, or modscan32 and see if you get non-zero data for the addres 319000. This should be an input register.
12-04-2012 05:59 AM
Dear Kudos,
as mentioned in my first message tag (s. above) I have two Modbus clients with which I can
read the memmory of the measurement device (= Modbus server) at the specified address.
I have enclosed you a screenshot about the respective results (s. enclosure).
So I think the Modbus IO server from National Instruments has anyhow, anywhere a problem
and I'm not sure whether the function block IO server will solve this problem.
Greetings
JKitzbichler
12-04-2012 07:32 AM
Now I am confused.
Your first post had an attachement that showed the variable bieng linked to modbus address 319000. These modbus registers corespond to input registers,
This last attachement shows a modbus quiery setup for function code 3 (read holding registers). The corresponding address would be 419000. Have you tried to set the Modbus I/O server to address 419000 or 419060 as in your last attachement.
.
12-07-2012 07:31 AM
Dear Kudos,
sorry for my belated answer, but I was for two days out of the office.
The problem depends not on any address. I have tried to read data from 319000 and 419000
as 16bit unsigned integer and with F319000 and F419000 as 32bit values of type single (float).
The answer is always the same, a progressing trend line can be seen with value zero but with "frozen" time stamp value
and if I activate the data logging I can not see any acceptable data even not the expected zero values in the database.
For completeness I have still added two screenshots about the modbus IO server configuration and one
binding variable configuration.
Greetings
JKitzbichler