[Logo] Serotonin Software Community
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Illegal Function alarm  XML
Forum Index » User help
Author Message
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

I am reading data from a modbus ip device and have data points configured to access coil status registers. When these points are enabled, I receive alarms like the following:

'Measurements A': Baseline A1 P1 WL1: Illegal function

What does this mean?

Here's the configuration of a typical point:

"loggingType":"ON_CHANGE",
"intervalLoggingPeriodType":"MINUTES",
"intervalLoggingType":"INSTANT",
"purgeType":"YEARS",
"pointLocator":{
"range":"COIL_STATUS",
"modbusDataType":"BINARY",
"additive":0.0,
"bit":0,
"multiplier":1.0,
"offset":110,
"settableOverride":true,
"slaveId":1,
"slaveMonitor":false
},
"eventDetectors":[
],
"engineeringUnits":"",
"chartRenderer":{
"type":"IMAGE",
"timePeriodType":"MINUTES",
"numberOfPeriods":60
},
"dataSourceXid":"DS_DATA_A",
"defaultCacheSize":1,
"discardExtremeValues":false,
"discardHighLimit":1.0E-4,
"discardLowLimit":-1.0E-4,
"enabled":false,
"intervalLoggingPeriod":15,
"name":"Baseline A1 P1 WL1",
"purgePeriod":1,
"textRenderer":{
"type":"BINARY",
"oneColour":null,
"oneLabel":"On",
"zeroColour":"#ff0000",
"zeroLabel":"Off"
mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

Are you sure the range should be Coil Status? That's the first thing i would check.

Best regards,
Matthew Lohbihler
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

Yes, these should be coil status values; they represent on/off switches used for controlling how the device calculates results. The user needs to be able change them.
mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

What if you enable points one at a time or in groups in order to determine if a particular point or points are causing the problem?

Best regards,
Matthew Lohbihler
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

Individually or in groups doesn't matter. Enabling any of my coil status data points causes this alarm. What is interesting is that if I enable all of the binary data points that reside in the same modbus address (e.g. address 133, bits 0-5), only one of them produces alarm (the lowest bit). Disabling that one just causes the next highest one to alarm.
mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

If this is a I/P data source, any chance you could expose it temporarily to internet access so that i can try it myself?

Best regards,
Matthew Lohbihler
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

I've discovered that I'm getting these illegal function errors on input status data points as well.
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

Another discovery: enabling "Contiguous batches only" alleviates the problem. Could there be an conflict between mango's disparate value mechanism and the the device's attempt to modify modbus registers?

As far as I'm concerned, if turning on contiguous batches only resolves these errors without sacrificing performance, then I'm happy.
mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

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.

Best regards,
Matthew Lohbihler
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

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.
 Filename exceptions.txt [Disk] Download
 Description Exceptions being produced when 'Illegal function' errors occur in mango.
 Filesize 6 Kbytes
 Downloaded:  53 time(s)

mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

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?

Best regards,
Matthew Lohbihler
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

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.
SteveE

Initiate

Joined: 13/07/2010 14:59:24
Messages: 38
Offline

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.
 Filename xxx.txt [Disk] Download
 Description Data source and point definitions
 Filesize 26 Kbytes
 Downloaded:  36 time(s)

mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

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.

Best regards,
Matthew Lohbihler
mlohbihler

Master
[Avatar]

Joined: 01/03/2007 22:48:52
Messages: 1456
Offline

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.

Best regards,
Matthew Lohbihler
 
Forum Index » User help
Go to:   
Powered by JForum 2.1.9 © JForum Team