Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENBT EXCP 0300 #9

Closed
MarcosZornitta opened this issue Sep 8, 2017 · 8 comments
Closed

ENBT EXCP 0300 #9

MarcosZornitta opened this issue Sep 8, 2017 · 8 comments

Comments

@MarcosZornitta
Copy link

I need two different programs to connect to a PLC to pick up different information. But the CLP ethernet card shows the 'EXCP 0300' fault when I do this. Do I need to do something different for this case?

@dmroeder
Copy link
Owner

dmroeder commented Sep 9, 2017

You shouldn't have to do anything special to use multiple instances reading at the same time. You just have to respect the modules limit of simultaneous connections. Is this a 1756-ENBT? If so, what firmware revision is it?

There was an "undocumented feature" in specific firmware revisions that caused a memory leak apparently, which triggered this error message.

If you can tell me what specific hardware you are communicating to and what firmware revisions they are, I may be able to help more.

@MarcosZornitta
Copy link
Author

Yes, it's a 1756-ENBT/A. The firmware is in revision 6.006.

The hardware structure is:

capturar

Note that I have two ethernet cards, but I only use slot 7 to communicate with pylogix. The other card is for automation devices only.

Thanks in advance.

@dmroeder
Copy link
Owner

dmroeder commented Sep 9, 2017

Can you give me a little context on how/when the this happens? Can you share any of your code? You can email directly to me if you prefer.

@MarcosZornitta
Copy link
Author

I still can not detect when this happens. However, if I leave only one program running the error does not happen (Only one program has been run for a month without problems). If I start reading tags in both programs, it reads without problems for a certain time and then displays the failure on the card. The codes do not have anything different, just read a bit (trigger) every 500ms and if it rises true the code starts reading about 1000 tags. Both programs do this, just change the tags that each reads.

But if you still need me to send you the code, I'll send it in your email.

@dmroeder
Copy link
Owner

I have a ENBT and L73 at work that I will test with when I get some time. I cannot reproduce the issue with a CompactLogix, I think this is more of a ENBT firmware issue. I'll do my best to prove it out though. I'll make sure my ENBT has the same revision. The ENBT did have a memory leak issue, though according to the KB, you are running the firmware that was supposed to fix it. In fact, I think that is the latest.

http://www.plctalk.net/qanda/showthread.php?t=88929

I have been running a test over the last couple of days with my CompactLogix. I have 4 scripts running, each reads ~750 tags every 20 seconds. Each file has read ~6500 times so far with no issues

@MarcosZornitta
Copy link
Author

Can you send me your email to me? I'll send you two short scripts that when running both at the same time the card presents the EXCP 0300 error.

marcoszornitta@gmail.com

@dmroeder
Copy link
Owner

I sent you an email, I'll check into it when you send the scripts over.

@dmroeder
Copy link
Owner

The cause of the error on the ENBT seemed to mostly have to do with calling .Close() with every read/write. Close() should really only be called when you are completely done exchanging data with the controller. The reason being, there’s a bit of overhead when a connection is made. If you were to make a script that just did one simple read it would work like this:

-Register session
-Forward Open
-Initial Read to get data type
-Read to get the data
-Close() is called by the user
-Forward Close
-Unregister Session

Now if you had a scrip where a thread was continuously reading a single tag, you would have the register session, forward open and initial read happening one time, now you’d just be calling Read() since the connection is open and we now know the data type. If Close() is called, we’d have to re-register the session and reopen the connection. This would be very inefficient and in the case of the ENBT, it was too much for it causing the error on the card.

So the moral of the story is, we should only call .Close() when we are completely finished exchanging

@dmroeder dmroeder changed the title ONE CLP, TWO PYLOGIX PROGRAMS ENBT EXCP 0300 Sep 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants