Illegal Function alarm
-
Hi Steve,
I'm glad it's worked out. Note that your equipment is returning misleading error responses. If choosing contiguous batches fixes the problem, it means that the problem was "illegal register address", not "illegal function".
I think this has been explained elsewhere, but the problem is thus... Say you want the values in registers 10 and 12, but you don't care about 11. It can be faster to do a single request for 10-12 than two requests each for 10 and 12. But some equipment will complain if it doesn't store anything at register 11. In these cases you can force two requests by clicking to only batch requests over contiguous register ids.
-
Sorry, my previous post was incorrect. Testing against a larger system with multiple data sources shows that the contiguous batches setting has no effect on the occurrence of the illegal function alarm.
I will attach the modbus4j exceptions being produced.
Attachment: download link
-
Hmm... After looking at the code, i can't see how that condition would happen. First, what version of Mango are you using? Second, can you forward an export of your data source config?
-
I'm using v1.9.0.
Is it allowable for me to define multiple data sources that all communicate with the same ip host/port? I started seeing these errors after splitting my 900+ data points between 18 data sources all going at the same host/port. I wanted different data sources so I could use different update times for various groups of data points.
Let me know so I can rearrange my data points, if necessary, and retest before I send you my large set of DP definitions. Thanks.
-
Ok, I've reproduced this again with a small set of data points. The included numeric data points work correctly; the binary coil status data points produce the illegal function (address) errors.
Attachment: download link
-
Works fine for me, but i'm using a different slave. If you want more personalized help on this - in particular getting things working with your device(s) - use the contact us page to request support services. Turnaround is much faster, and we'll get to the bottom of the issue.
-
Oh, BTW, in that export, all of the "dp40012" points are coded as Coils, but - considering the "40012" and the fact that the bit number is set - it looks like you meant them to be holding registers.
-
I apologize for not posting this sooner, but I was too embarrassed. Your comments about whether these points are really coil and input status finally sank in. These are actually bits packed into input and holding registers, but I was trying to get them from the coil and input status ranges. (Doh!) So, I wrote meta data points to access the individual bits in the registers. This works fine, but is a bit slow. I'll create a new topic to discuss how to make this faster.
Thanks and sorry for my modbus ignorance.
-
Steve, you can create a binary point on a holding register, and specify the bit in the register that you want.