On my latest project with Ignition, I found ‘interesting’… bug?
My Ignition v7.8.1 64bit is connected to Siemens S7-414 PLC.
I have a bunch of BYTE tags, defined for alarming and statuses. What’s happening is, that some of these BYTE tags shows “Config Error” in their Quality status.
All tags are created/defined equally (see attached picture), but some of them are in error.
I also noticed, that error is showing only in tags, defined as MB (Memory bytes). I also have bunch of BYTE tags from DB’s (DataBlocks), and these are fine.
Also, the tags with error are not always the same…
Yesterday, for example, I had only 3 tags with error, today I have more than 10…
Until now, all my projects with Ignition was with Siemens S7-300 PLC’s and I never had this errors. Also, for this project, when I was testing in my office, I had S7-300 PLC and thera was no errors.
Now, the project on site is live and it’s time to put Ignition to work, and this happens…
I think this could be fixed already in 7.8.2, but you might try changing the Ignition tag type from Byte to Short in the meantime. 7.8.2 should be released next week.
OK, so you (Ignition) know about this… bug?
I’m looking forward to v7.8.2.
About changing from byte short… byte is 8 bit long and unsigned, short is 16 bit and signed.
I can’t use 16 bit where I need 8 bit, because value will be different. While this (maybe) will pass for alarming, it will not for my statuses for equipment… and not only for statuses… I’m using bytes also in telegrams and elsewhere.
An Ignition byte is 8-bit signed, so you shouldn’t use it here either with the 8-bit unsigned value coming from the PLC. I believe that is what is causing your CONFIG_ERROR status - when the value is exceeding the limits of a signed 8-bit byte.
So, that’s the problem: Ignition byte is 8 bit signed, and it should be unsigned, like in Siemens PLC?
This is from Ignition manual:
[attachment=0]About Siemens Addressing - Ignition User Manual 7.8.png[/attachment]
AFAIK, all byte, word and double word tags are unsigned, and short, integer and long are signed…
Ignition’s datatypes have always been signed - they’re basically a reflection of Java’s built-in types.
When dealing with unsigned types coming from OPC-UA or OPC classic it has always been necessary to “size up” the datatype of the Ignition tag to accommodate the full range of the unsigned type.
It looks like what changed in 7.8.1 is that where previously the value would silently wrap around to negative if it was too large for the signed type (i.e. 128 becomes -128, 129, becomes -127, etc…), it now fails with configure error…
I don’t believe this will change for 7.8.2. The bug I was thinking was that writing values to the “top half” of the range when the OPC type was unsigned was failing.
OK, I understand now and I hope it will be resolved ASAP…
But today I run into another strange … bug (again)?
I tried to define a tag from DB and when I press OK, ALL tags in Ignition goes in to fault???
[attachment=1]Ignition_byte_tag_error2.PNG[/attachment]
And in Ignition Gateway console, this is showing:
[attachment=0]Ignition78DKC - Ignition Gateway.png[/attachment]
When I disable this one new tag, everything goes to normal…
Yes, that looks like a bug. If you could send your logs into support that would be helpful. Also, if you can tell me what the final range of indexes being read in that DB is before and after adding the final tag, that would help too.
The logs can be exported from that console page in the gateway using the export link in the upper right. You’ll get a logs.bin.gz that you can send in.
As for the ranges, what I mean is: the tag you added that caused the error to start was DB401,B2450. I’m guessing you’re reading a bunch of other tags in DB401,B2xxx range as well. The driver tries to group these into a single request (but there’s a bug and it’s trying to group too many), so I’m just wondering if you know what range of tags you’re reading, i.e. where in the DB401,B2xxx do you start requesting tags from? Or are you reading all of them?
[quote=“Kevin.Herron”]The logs can be exported from that console page in the gateway using the export link in the upper right. You’ll get a logs.bin.gz that you can send in.
As for the ranges, what I mean is: the tag you added that caused the error to start was DB401,B2450. I’m guessing you’re reading a bunch of other tags in DB401,B2xxx range as well. The driver tries to group these into a single request (but there’s a bug and it’s trying to group too many), so I’m just wondering if you know what range of tags you’re reading, i.e. where in the DB401,B2xxx do you start requesting tags from? Or are you reading all of them?[/quote]
OK, I got the log file. I’ll send it.
This are all (currently, beacuse I’m testing, in the future will be more tags) tags which I have defined from that DB401:
[attachment=0]Ignition_byte_tag_error3.PNG[/attachment]
And the tags from B2450 to B2455 are the one causing errors…
EDIT: ok, instead of B2461 should be B2450… I’m trying all sort of things…
OK, new ‘discovery’:
I disabled tags, one by one, and when I came to tag ‘currentStationName’, which is defined as STRING (in the PLC, in the DB, the tag is defined as STRING[254]), and disabled it, all tags came good.
So, at first, I had the tag in Ignition defined as ‘DB401,STRING2468’, without length (I thought, that Ignition is smart enough, that will find the correct length). Then I tried ‘DB401,STRING2468.254’ and same error…
Then put ‘DB401,STRING2468.10’ and… VOILA… all tags are good. Then I increase the length, until I came to 202:
at ‘DB401,STRING2468.202’ all tags are good, at ‘DB401.STRING2468.203’ all tags are in error…
[attachment=1]Ignition_byte_tag_error4.PNG[/attachment]
[attachment=0]Ignition_byte_tag_error5.PNG[/attachment]
We looked at your logs, and it looks like you were correct in suspecting that there is a string character limit of about 200. Anything more than 202 will throw errors. You may want to update to 7.8.2 and see if that improves that behavior, but it looks like you’ll just have to limit your strings or break them up across multiple tags.[/quote]