04-22-2011 09:43 AM
I am trying to read the registers from a Zetron 1708 RTU. The registers are for the time period of the status input 1, they are registers 42014, 42015, and 42016. According to Zetron, they all have to be read together. I have been unsuccessful at reading them. When I put an expression in to read any of them, I get a modbus Exception Response 2, illegal data address, function code 3, etc. The program also stops polling that RTU until I delete the expression from it. The system communicates fine with this RTU using Modbus protocol to a Zetron 1700 controller, which communicates to the Zetron 1708 RTU. Any ideas?
04-26-2011 07:29 AM
Log the Modbus communication data on the serial port. Select Option->Serial port, enable the "Diagnostic file settings" of the port you use, input a log file path such as c:\log.txt, check "Value in HEX" and Accept.
Create expressions to read the data. And post the log file here.
Can you ask Zetron for the definition of "they all have to be read together"? I'd like to have an example of the expected request data frame, and then we can compare with the one sent by lookout.
04-26-2011 09:35 AM
You may use 3rd party serial monitor tool.
Can you read other registers? I want to make sure that only these 3 registers have the problem and you can read other holding registers well when you remove the expressions.
I probably know what request data lookout modbus sends out. But I need to know what kind of request data the Zetron accepts on these 3 registers. Maybe you can get it from manual, or ask Zetron technical support.
04-26-2011 11:59 AM
The Zetron 1708 Manual has the following paragraph:
"Queries to read an accumulator or counter must request all associated registers or an illegal
data address exception will be returned. An illegal data address exception will also be
returned to queries that overlap accumulator or counter address boundaries by requesting
more than nine registers."
Exactly, how do I read all of the associated registers together? If I just insert expressions into the process panel to display the values, I get modbus exception errors.
04-26-2011 10:22 PM
Create a new Modbus object, connected to the same serial port and same device. Create expressions to read that 3 registers from the new Modbus object.
In the new modbus object's property diaglog box, select Advanced, change "read holding regs" to 9 or lower. This value means how many registers can be read together.
So, this new Modbus is just for reading those special registers. And it cannot read more than 9 registers in one read command.
04-27-2011 01:18 PM
I did as you said and after making the new modbus object as specified and inserting all of the expressions for all of the registers associated with the specific counter that I wanted to read, it provided me with the values. The key is that you do have to have expressions for the three registers holding the counter values which are 42011, 42012, 42013 for counter one, you also have to have expressions for the three registers associated with the period, which are 42014, 42015, and 42016 even though I wasn't using them otherwise it gives you illegal modbus address errors.